작성
·
102
0
@Configuration
public class ObjectFactory {
@Bean
public PaymentService paymentService () {
return new PaymentService(exRateProvider());
}
@Bean
public ExRateProvider exRateProvider() {
return new WebApiExRateProvider();
}
}
여기서 Bean 어노테이션을 붙이면 paymentService가 호출되지 않아도 paymentService와 exRateProvider의 의존관계가 설정이 되는게 맞나요??
만약 exRateProvider에만 Bean 어노테이션을 붙이지 않으면 어떻게 되는 건가요??
답변 1
0
@Configuration 클래스 안에 @Bean이 붙은 메소드만 스프링 컨테이너가 관리하는 오브젝트, 즉 빈이 됩니다. @Bean 이 없으면 스프링의 빈으로는 생성이 안 됩니다.
그런데, 스프링이 아니라 그냥 단순 오브젝트 팩토리라고 보고 실행을 하면 코드는 동작할테니 @Bean이 없어도 해당 오브젝트를 만들 수는 있죠. 이걸 스프링과 같은 프레임워크가 인식해서 자동으로 만들고 관리해주도록 하는 것이 이런 애노테이션의 활용 방법입니다.