스프링 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 어노테이션이 있다고한다.