프로그래밍 언어/Spring MyBatis

Spring : @Component vs @Bean

Rateye 2021. 6. 3. 12:00
728x90
반응형
질문 : 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
728x90
반응형