@Configuration , @Bean
memberService
, memberRepository
, orderService
, discountPolicy
들이 스프링 컨테이너에 등록이 된다.ApplicationContext 를 스프링 컨테이너 라고 한다.
스프링 컨테이너에게 환경정보를 던져주면, 스프링 컨테이너가 그것을 관리한다.
기존에는 개발자가 AppConfig.class 를 사용해서 객체를 생성하고 DI 를 했지만, 스프링 컨테이너를 통해서 사용한다.
스프링 컨테이너는 @Configuration
이 붙은 AppConfig
를 설정(구성) 정보로 사용한다. 여기서, @Bean
이 붙은 메서드를 모두 호출해서 반환된 객체를 스프링 컨테이너에 등록한다. 이렇게 스프링 컨테이너에 등록된 객체를 스프링 빈이라 한다.
스프링 빈 은 @Bean
이 붙은 메서드 명을 이름으로 사용한다.
스프링 빈을 찾을 때에는 applicationContext.getBean()
메서드를 사용해서 찾을 수 있다.
이름을 바꿀 수도 있다. 특별한 경우가 아니면 그냥 관례를 따르자.
참고
@Bean(name = "abc")
public MemberService memberService() {
...
}