최대 1 분 소요

Starting Spring Framework (4)

/ AutoWiring / @Primary / @Qualifier / @Bean / @Component

How can I list all beans managed by Spring Framework?

    • 위와 같이 스트림을 이용해서 관리되는 Bean 목록을 가져와 볼 수 있다.

What if multiple matching beans are available?

  • @Primary , @Qualifier 를 사용한다.
  • 태그 “@Primary”,”@Qualifier” 에 Component에 대해서 정리해둠

그럼 @Bean 이랑 @Component 의 차이는 무엇일까?

  • 우선 스프링 MVC 에서는 @Controller@Service@Repository 등으로 빈으로 등록할 수 있으며, configuration 관련 객체들은 @Bean과 @Component 으로 스프링 컨테이너에 객체를 빈으로 등록할 수 있다.
  • @Bean 은 메소드 레벨에서 선언하며, 반환되는 객체(인스턴스)를 개발자가 수동으로 Bean을 등록하는 어노테이션이다.
  • 반면 @Component는 클래스 레벨에서 선언함으로써 스프링이 런타임시에 컴포넌트 스캔을 하여 자동으로 빈을 찾고 등록하는 에노테이션이다.

@Bean 사용 예제

@Configuration  
public class AppConfig {  
   @Bean  
   public MemberService memberService() {  
      return new MemberServiceImpl();  
   }  
}

@Component 사용 예제

@Component  
public class Utility {  
   // ...  
}

정리

@Component @Bean
클래스에 사용 메소드에 사용
개발자가 직접 컨트롤이 가능한 내부 클래스에 사용 개발자가 컨트롤이 불가능한 외부 라이브러리 사용시 사용

출처 : https://youngjinmo.github.io/2021/06/bean-component/

댓글남기기