[스프링 교과서] 스프링 컨텍스트: 빈 정의
스프링은 컨텍스트 안의 인스턴스를 사용해서 앱이 제공하는 다양한 기능에 앱을 연결한다
컨텍스트는 사용자가 정의한 인스턴스를 스프링이 제어할 수 있게 해주는 복잡한 메커니즘이다.
2.1 메이븐 프로젝트 생성
이 책에서는 아파치 메이븐 Apache Maven 프로젝트로 생성한다
메이븐은 앱의 빌드 프로세스를 쉽게 관리할 수 있는 도구임
빌드에 자주 포함되는 작업은 아래와 같다
- 앱에 필요한 의존성 내려받기
- 테스트 실행
- 구문이 정의한 규칙 준수 여부 검증
- 보안 취약점 확인
- 앱 컴파일
- 실행 가능한 아카이브에 앱 패키징
src 폴더 : 소스 폴더, 앱에 속한 모든 것을 넣을 수 있음
ㄴ main 폴더 : 애플리케이션 소스 코드 저장
ㄴ test 폴더 : 단위 테스트의 소스 코드 저장
pom.xml 파일 : 새 종속성 추가처럼 메이븐 프로젝트 구성을 작성하는 파일
<dependencies> 와 </dependencies> 태그 사이에 의존성들을 추가함
그 안에 <dependency> 와 </dependency> 태그 사이에 의존성을 포함해서 표현한다
위처럼 pom.xml 파일에 새 종속성을 추가하면 메이븐은 해당 종속성을 나타내는 JAR 파일을 내려받음
이는 프로젝트의 External Libraries 폴더에서 찾을 수 있음
2.2 스프링 컨텍스트에 새로운 빈 추가
Parrot 클래스의 인스턴스를 생성하고, 프로젝트에 스프링 컨텍스트 의존성을 추가한 후
스프링 컨텍스트의 인스턴스를 생성했다.
그니까 지금까지 한 것은 Parrot 인스턴스를 생성했지만, 스프링 컨텍스트 외부에 있으며
그리고 스프링 컨텍스트를 정의했지만 현재 비어있다.
이제 스프링 컨텍스트에 Parrot 인스턴스를 추가하면 스프링이 해당 인스턴스를 볼 수 있다
스프링 컨텍스트에 빈(bean)과 같은 새로운 객체 인스턴스를 추가하는 방법에는 여러개가 있다
-> 스프링이 빈 일부인 객체만 관리할 수 있기 때문에 추가하는 것임
1. @Bean 애너테이션 사용
1단계: 프로젝트에서 구성 클래스 정의하기
스프링 구성 클래스는 @Configuration 애너테이션이 지정되어있다
구성 클래스로 할 수 있는 일 중 하나가 스프링 컨텍스트에 빈을 추가하는 것이다
2단계: 빈을 반환하는 메서드를 생성하고 @Bean 애너테이션을 메서드에 추가하기
컨텍스트에 추가하려는 객체 인스턴스를 반환하는 메서드를 정의하고,
그 메서드에 @Bean 애너테이션을 추가해야 함
3단계: 새로 생성된 구성 클래스로 스프링이 컨텍스트를 초기화하도록 만들기
ㅏ
2. 스테레오타입 애너테이션(@Component, @Controller, @Service, @Repository ...) 사용
ㅁ
3. 프로그래밍 방식
ㅁ