컴포넌트 스캔 (ComponentScan) - 자동 등록
- 등록할 스프링 빈이 너무 많을 때 @Bean
- 설정 정보가 없어도 자동으로 스프링 빈을 등록하는 컴포넌트 스캔 기능 제공
- 의존관계를 자동으로 주입하는 @Autowired 기능도 제공
- AppConfig에 @Bean ( 설정정보, 의존관계 )을 등록하지 않는다..
- @ComponentScan은 전체적으로 스캔을 해서 @Component 애너테이션이 붙은 클래스를 다 자동으로 스프링 빈으로 등록해준다.
- ComponentScan을 사용할 경우 자동으로 빈 등록은 가능하지만, 의존관계 주입할 수가 없다. ⭐⭐⭐⭐⭐
- 그래서 생성자에 @Autowired를 붙여서 의존관계를 주입해준다.
- 이때 메서드 명의 맨 앞글자는 소문자로 들어간다.
- Autowired를 지정하면 스프링 컨테이너 내부에서 같은 타입을 조회하고 해당 스프링 빈을 주입해준다.
컴포넌트 스캔 기능
- basePackages = "경로" : 하위에 있는 모든 Component 조회
- 탐색 위치를 지정하지 않으면 default 값은 ComponentScan을 입력된 클래스의 패키지가 시작 위치가 된다.
- 프로젝트 최상단에 두면 해결된다.
- excludeFilters = 제외하고 싶은 class 입력
컴포넌트스캔 기본 대상
- @Component
- @Controller
- @Service
- @Repository
- @Configuration
컴포넌트 스캔에서 중복 시
- 자동 빈 등록 vs 자동 빈 등록 : ConflitingBeanDefinitionException 오류 발생
- 수동 빈 등록 vs 자동 빈 등록 : 수동 빈이 자동 빈을 오버 라이딩해서 우선시된다.
'IT 정보 > Spring' 카테고리의 다른 글
[Spring] Spring MVC - 데이터 엑세스 계층(1) JDBC (15) | 2022.06.30 |
---|---|
[Spring] AOP 기본 개념 (47) | 2022.06.21 |
[Spring] 스프링 컨테이너와 빈 ( 생성, 등록, 조회 ) (44) | 2022.06.17 |
[Spring] Bean Scope (Singleton pattern) (43) | 2022.06.16 |
[Spring] 스프링 컨테이너 (12) | 2022.06.16 |