Bean이란?
IOC 컨테이너에 의해 관리되는 객체를 말한다. 스프링 DI 컨테이너에 의해 관리되는 POJO를 빈이라고 부른다. 스프링은 이를 싱글톤 객체로 생성하고 관리한다.
빈 등록 방법
- @Bean - 수동
- @Configuration - 수동
- @Component - 자동
[수동 등록] Bean, Configuration
설정 클래스에 Configuration을 붙이고 그 안에 Bean 어노테이션으로 스프링 컨테이너에 빈을 생성한다.
개발자가 제어 불가능한 라이브러리를 쓸 때
전범위로 사용되는 클래스를 등록할때
다형성으로 여러 구현체를 등록할때 사용한다.
[자동 등록] Component
스프링이 직접 클래스를 검색해 빈으로 등록해주는 기능이다.
@Component를 가진 모든 대상을 가져와 빈에 등록한다.
빈에 등록되는 이름은 가장 앞 문자를 소문자로 바꾸는 것이다.
예를 들어 RedisConfig가 있다면 → redisConfig로 빈이 등록된다.
기본 컴포넌트 스캔 대상
@Component
@Controller
@Service
@Repository
@Configuration
컴포넌트 스캔 범위
@ComponentScan이 있는 파일의 패키지 아래를 기본적으로 찾는다.
SpringBoot는 main에 @SpringBootApplication에 포함되어 있다.
주의할 점
같은 인터페이스를 상속받는 클래스가 두 가지 있을때 사용할 클래스만 빈에 등록한다.
차선책으로는 @Qulifier나 @Primary를 사용해야 한다.
Bean, Configuration 과 Compent의 차이
Bean, Configuration
- 수동 빈 등록 방법
- 외부 라이브러리를 등록할때 사용
- @Configuration을 명시해야 싱글톤 보장한다.
Component
- 자동 빈 등록 방법
- 어노테이션이 있는 클래스를 찾아 등록한다.
참고 자료
'스프링 부트' 카테고리의 다른 글
[스프링] Statement 대신 PreparedStatement를 사용해야 하는 이유 (0) | 2022.04.19 |
---|---|
[인텔리제이] tdd 템플릿 만들기 (0) | 2022.04.11 |
DTO vs VO vs Entity 비교 (0) | 2022.04.04 |
[스프링부트] MongoDB로 CRUD 실습해보기 (0) | 2022.03.02 |
[스프링부트] javax.persistence와 org.springframework.data.annotation의 차이 (0) | 2022.03.02 |
댓글