@Bean VS @Component

jaycee·2023년 1월 25일
0

Bean과 Component의 차이점, 다른게 쓰이는 이유

@Bean@Component
어노테이션 위치메소드클래스
저장되는 객체어노테이션으로 지정된 메소드의 리턴 값클래스를 @Bean으로 등록됨
사용처개발자가 제어가 불가능한 외부 라이브러리를 실행한 결과개발자가 직접 개발한 클래스
주의 사항@Configuration 어노테이션이 있는 클래스 내부의 메소드에 선언되어야 함
  • Bean은 스프링 컨테이너에서 관리되는 객체이다.
  • Bean으로 관리되지 않은 객체는 스프링 컨테이너에서 의존성 주입을 받을 수 없다.
  • 왜 @Bean 어노테이션을 개발자가 제어가 불가능한 외부라이브러리에 사용하는가?
    -> 외부 라이브러리 소스를 수정할 수 없어서 @Bean 어노테이션으로 등록할 수 없기 때문이다.
    -> 그래서 외부 라이브러리 메소드의 실행결과를 @Bean으로 지정하여 사용한다.
  • 왜 @Configuration을 클래스 상단에 붙여야 하는지?
    -> 싱글톤 객체로 관리하기 위해서는 @Configuration을 붙여줘야함
  • 물론 @Bean, @Component 어노테이션 모두 잘못된 위치에 입력하면 컴파일 에러가 발생한다.
profile
오늘도 하나 배웠다.

0개의 댓글