본문 바로가기

스터디/혜림

@bean 과 @component 의 차이

스프링 MVC에서는 @Controller, @Service, @REpository 등으로 빈을 등록할 수 있다.

configuration 관련 객체들은 @Bean 과 @Component 로 스프링 컨테이너에 객체를 빈으로 등록 할 수 있다.

@Bean

반환되는 객체(인스턴스)를 개발자가 수동으로 빈 등록

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

@Component

스프링이 런타임시 componet 를 스캔해 자동으로 빈을 찾고 등록

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

@Bean 과 @Component 이 차이

@Bean @Component

선언 레벨 메소드 클래스
컨트롤 외부 라이브러리 사용 시 사용하기 때문에 개발자가 컨트롤 불가능 내부 클래스에 사용하기 때문에 개발자가 직접 컨트롤 가능
  @Configuration 필요  
(없으면 의존성 주입하는데 활용 불가, 있으면 정상적으로 IoC 컨테이너에 등록)    

 

참고)근데 사실 Configuration 내부에 Component 어노테이션이 있다고한다.