컴포넌트 스캔은 스프링에서 자동으로 빈을 등록하고 관리하기 위한 방법이다.
컴포넌트 스캔은 이름 그대로 @Component 애노테이션이 붙은 클래스를 스캔해서 스프링 빈으로 등록한다.
컴포넌트 스캔을 사용하려면 먼저 @ComponentScan을 설정 정보에 붙여주면 된다.
컴포넌트 스캔을 사용하면 @Configuration 이 붙은 설정 정보도 자동으로 등록되기 때문에
excludeFilters를 이용해서 설정정보는 컴포넌트 스캔 대상에서 제외했다.
@Configuration
@ComponentScan(
excludeFilters = @Filter(type = FilterType.ANNOTATION, classes =
Configuration.class))
public class AutoAppConfig {
}
컴포넌트 스캔이 만약 탐색 시에 모든 자바 클래스를 전부 탐색한다면 시간이 오래 걸릴 것이다.
컴포넌트 스캔은 탐색 위치를 지정할 수 있는데 기본적으로 @ComponentScan이 붙은 설정 정보 클래스가 시작 위치가 된다.
@ComponentScan(
basePackages = "hello.core",
}
다음과 같이 지정도 가능하다.
권장하는 방법은 패키지 지정을 하지 않고, 설정 정보 클래스의 위치를 최상단에 두는 것을 추천한다.
최근의 스프링 부트 또한 이 방법을 기본적으로 제공한다.
컴포넌트 스캔의 대상
컴포넌트 스캔은 @Component 뿐만 아니라 다음과 같은 다른 애노테이션도 추가로 스캔한다.
- @Controller
- @Service
- @Repository
- @Configuration
실제로 컨트롤러 애노테이션을 확인해 보면
@Component 애노테이션을 포함하고 있다.
다른 애노테이션을 확인해 봐도 마찬가지로 @Component 애노테이션이 존재함을 확인할 수 있다.
'Back-End > Spring' 카테고리의 다른 글
빈 스코프 (0) | 2023.09.08 |
---|---|
빈 생명주기 콜백 (0) | 2023.09.08 |
싱글톤 패턴과 싱글톤 컨테이너 (0) | 2023.09.08 |
스프링 핵심 원리 -2 (0) | 2023.09.01 |
스프링 핵심 원리 요약 - 1 (0) | 2023.08.20 |