728x90
반응형
SMALL
@ComponentScan
@Configuration
@ComponentScan(
basePackages = "hello.core",
excludeFilters = @ComponentScan.Filter(type = FilterType.ANNOTATION, classes = Configuration.class)
)
public class AutoAppConfig {
}
컴포넌트 스캔은 @Component 어노테이션이 붙은 클래스를 스캔해서 스프링 빈으로 등록해준다.
@Configuration, @Controller, @Service, @Repository 등이 대상이 되는 이유는 각 어노테이션 내부로 들어가면 @Component가 선언되어 있기 때문이다.
basePackages 속성으로 탐색할 패키지 시작 위치를 지정할 수 있다. 하지만 생략하여 디폴트를 쓰는게 추세이다.
탐색할 패키지 디폴트 시작 위치 : @ComponentScan 이 붙은 클래스의 패키지 => 일반적으로 최 상단 패키지에 Config 파일이 존재한다.
- excludeFilters 속성으로 탐색에서 제외시킬 수 있다. 잘 사용하지는 않는다.
includeFilters 속성도 존재, 사용은 ,, 알아만 두자.
※ 스프링 빈 저장소는 스프링 빈이 등록되기 전에 필요한 의존관계 그래프를 내부적으로 미리 만든다.
예를 들어 A 클래스에서 B 클래스의 의존성을 주입해주는 구조일 때 아래와 같은 순서로 동작한다.
그래서 A 클래스를 빈으로 등록하려 할 때 B 클래스가 없으면, 먼저 B 클래스를 빈으로 등록하고 A 클래스에 주입하여 A 클래스 빈을 등록한다.
ClassPathBeanDefinitionScanner - Identified candidate component class: fole [~]
Autowiring by type from bean name ~
728x90
반응형
LIST
'Study > [Inflearn] 스프링 핵심 원리 - 기본편' 카테고리의 다른 글
[Spring - Inflearn] Spring Bean Scope - 스프링 빈 스코프 (0) | 2021.02.07 |
---|---|
[Spring - Inflearn] 웹 애플리케이션과 싱글톤 (0) | 2021.01.17 |
[Spring - Inflearn] Spring Container & Bean (0) | 2021.01.10 |
[Spring - Inflearn] IoC & DI, IoC Container & DI Container (0) | 2021.01.10 |
[Spring - Inflearn] Spring & Springboot & 객체 지향 설계 (0) | 2021.01.03 |