1. Bean 이란?
- Spring에서 사용되는 POJO(Plain Old Java Object)의 일종
- Spring의 IoC 컨테이너가 관리하는 자바 객체
- Bean으로 등록한 객체는 IoC 컨테이너가 의존성을 주입해줄 수 있음
- @Controller, @Service, @Repository, @Component 등의 어노테이션이 붙은 클래스는 자동으로 Bean으로 등록
- @Configuration의 경우 내부에서 @Component를 사용
2. 특정 객체를 Bean으로 등록하는 방법
- @Component - 클래스를 Bean으로 등록
@Component public class MyBeanClass { ... }
- @SpringBootApplication내의 @ComponentScan이 처리될 때 자동으로 대상 클래스들을 Bean으로 등록
- 클래스 레벨의 어노테이션이기 때문에 클래스에만 사용 가능
- @Bean - 메소드의 반환 객체를 Bean으로 등록
@Configuration public class SpringConfiguration { @Bean public MyBeanClass myBeanClass { return new MyBeanClass(); } }
- @Configuration 어노테이션이 붙은 설정 클래스에서 @Bean 어노테이션을 사용하여 Bean 등록 가능
- @Configuration 클래스를 Component Scanning 하면서 @Bean 메소드의 반환값들이 Bean으로 등록됨
- 특정 객체를 반환하는 메소드에 @Bean을 붙이면 반환되는 인스턴스가 Bean으로 등록
- @Component vs @Bean
- @Component는 클래스 레벨에서, @Bean은 메소드 레벨에서 사용되는 어노테이션
- @Bean은 @Configuration 클래스 내에서 사용해야만 Bean 등록이 가능
- @Bean을 사용해야하는 경우?
- 외부 라이브러리 등에 정의된 객체이기에 클래스에 직접 @Component를 사용할 수 없을 경우
- 동적인 조건에 따라 특정한 구현체를 Bean으로 등록하도록 할 경우
- @Bean 등록을 명시적으로 하고싶을 경우
'프레임워크 > Spring' 카테고리의 다른 글
#5 Spring AOP(Aspect Oriented Programming) (0) | 2022.04.30 |
---|---|
#4 Spring 의존성 주입 방법 (0) | 2022.04.27 |
#3 Spring에 적용된 디자인 패턴 (0) | 2022.04.24 |
#1 Spring Boot (0) | 2022.04.21 |
#0 Spring (0) | 2022.04.20 |