스프링에서 빈으로 등록하는 방법
- 스프링 MVC에서는 @Controller, @Service, @Repository 등으로 빈으로 등록이 가능하다.
- configuration 관련 객체들은 @Bean과 @Component로 스프링 컨테이너에 객체를 빈으로 등록할 수 있다.
그럼 @Bean 과 @Component의 차이는 무엇일까?
- @Bean은 메소드 레벨에서 선언하며, 반환되는 객체(인스턴스)를 개발자가 수동으로 빈으로 등록하는 애노테이션이다.
- 반면 @Component는 클래스 레벨에서 선언함으로써 스프링이 런타임시에 컴포넌트스캔을 하여 자동으로 빈을 찾고(detect) 등록하는 애노테이션이다.
@Bean 사용 예제
@Configuration
public class AppConfig {
@Bean
public MemberService memberService() {
return new MemberServiceImpl();
}
}
@Component 사용 예제
@Component
public class Utility {
// ...
}
- @Bean을 사용하는 경우
- 개발자가 컨트롤이 불가능한 외부 라이브러리를 빈으로 등록하고 싶을때
- @Component를 사용하는 경우