질문 : 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
'프로그래밍 언어 > Spring MyBatis' 카테고리의 다른 글
Spring @Autowired 필드가 null 인 이유 (0) | 2021.06.28 |
---|---|
SpringData Maven Builds의“수명주기 구성에 포함되지 않는 플러그인 실행”을 해결하는 방법 (0) | 2021.06.26 |
Spring Framework에서 @Inject와 @Autowired의 차이점 (0) | 2021.06.11 |
Spring Boot 애플리케이션 용 포트를 구성하는 방법 (0) | 2021.06.10 |
SpringData JPA에서 CrudRepository와 JpaRepository 인터페이스의 차이점 (0) | 2021.06.10 |