-
[스프링/Spring] @Bean, @Component 차이 + @ConfigurationSpring 2021. 8. 3. 14:55
@Bean
- 개발자가 직접 제어가 불가능한 외부 라이브러리를 사용할 때 사용한다.
- @Configuraion을 선언한 class내부에서 사용한다.
- 메서드 단위로 지정할 수 있다. (그렇지 않을 시 컴파일 에러를 발생시킨다.)
- 즉, 개발자가 작성한 메서드를 통해 반환되는 객체를 Bean으로 만든다.
@Component
- 개발자가 직접 작성한 class를 Bean으로 등록 할 수 있게 만들어 준다.
- class 단위로 지정할 수 있다. (그렇지 않을 시 컴파일 에러를 발생시킨다.)
- @Controller, @Service, @Repository... 내부에 @Component가 정의되어 있다.
- 즉, 개발자가 작성한 class를 Bean으로 만든다.
@Configuration
- 스프링이 Bean 팩토리를 위한 오브젝트 설정을 담당하는 class라고인식하게 해준다.
- 1개 이상의 @Bean을 제공하는 class의경우 @Configuraton을 명시해야 된다.
- @Configuration 내부에 @Component가 정의되어 있으므로 별개의 개념으로 보면 안 된다.
정리
쉽게 생각하면 개발자가 직접 컨트롤이 안되는 라이브러리에 class들을 Bean으로 지정하고 싶을 때는
메서드에 @Bean + @Configuration 어노테이션을 사용하고, 개발자가 직접 만든 class를 Bean으로 지정하고 싶을 때는
class에 @Component 어노테이션을 사용하면 된다.
참고
'Spring' 카테고리의 다른 글
[스프링/Spring] 스프링 싱글톤 멀티스레드 환경에서의 주의사항 (0) 2021.08.06 [스프링/Spring] @Component, @Controller, @Service, @Repository 차이 (0) 2021.08.05 [스프링/Spring] Spring Boot Thymeleaf 문법 ! (0) 2021.03.21