Spring : @Component vs @Bean
질문 : Spring : @Component vs @Bean
클래스 경로 스캔을 사용하여 xml bean 정의를 제거하기 위해 @Component
주석이 Spring 2.5에서 도입되었음을 이해합니다.
@Bean
은 Spring 3.0에서 도입되었으며 xml 파일을 완전히 제거하고 대신 Java config를 사용하기 위해 @Configuration
@Bean
어노테이션을 도입하는 대신 @Component
어노테이션을 재사용 할 수 있었습니까? 내 이해는 최종 목표는 두 경우 모두에서 Bean을 만드는 것입니다.
답변
@Component
와 @Bean
은 완전히 다른 두 가지 작업을 수행하므로 혼동해서는 안됩니다.
@Component
(및 @Service
및 @Repository
)는 클래스 경로 스캔을 사용하여 Bean을 자동 감지하고 자동 구성하는 데 사용됩니다. 주석이 달린 클래스와 빈 (즉, 클래스 당 하나의 빈) 사이에는 암시 적 일대일 매핑이 있습니다. 이 접근 방식은 순전히 선언적이므로 배선 제어가 상당히 제한됩니다.
@Bean
은 Spring이 위와 같이 자동으로 수행하도록하는 대신 명시 적으로 단일 Bean을 선언하는 데 사용됩니다. 클래스 정의에서 Bean의 선언을 분리하고 선택한 방식으로 정확하게 Bean을 만들고 구성 할 수 있습니다.
질문에 답하려면 ...
@Bean
어노테이션을 도입하는 대신@Component
어노테이션을 재사용 할 수 있었을까요?
@Bean
어노테이션을 도입하는 대신 @Component
어노테이션을 재사용 할 수 있었을까요?
물론입니다. 그러나 그들은 이 친구들이 상당히 다르기 때문에 그렇게하지 않았습니다. spring은 이미 충분히 혼란 스럽습니다.
출처 : https://stackoverflow.com/questions/10604298/spring-component-versus-bean