참고: @Component 면 충분하기 때문에, includeFilters 를 사용할 일은 거의 없다. excludeFilters
는 여러가지 이유로 간혹 사용할 때가 있지만 많지는 않다.
> 특히 최근 스프링 부트는 컴포넌트 스캔을 기본으로 제공하는데, 개인적으로는 옵션을 변경하면서 사용하기
보다는 스프링의 기본 설정에 최대한 맞추어 사용하는 것을 권장하고, 선호하는 편이다.
1. FilterType 옵션 (5가지)
- ANNOTATION: 기본값, 애노테이션을 인식해서 동작한다.
- ex) org.example.SomeAnnotation
- ASSIGNABLE_TYPE: 지정한 타입과 자식 타입을 인식해서 동작한다.
- ex) org.example.SomeClass
- ASPECTJ: AspectJ 패턴 사용
- ex) org.example..*Service+
- REGEX: 정규 표현식
- ex) org\.example\.Default.*
- CUSTOM: TypeFilter 이라는 인터페이스를 구현해서 처리
- ex) org.example.MyTypeFilter
includeFilters 에 MyIncludeComponent 애노테이션을 추가해서 BeanA가 스프링 빈에 등록된다.
excludeFilters 에 MyExcludeComponent 애노테이션을 추가해서 BeanB는 스프링 빈에 등록되지 않는다.
@Configuration
@ComponentScan(
includeFilters = @Filter(classes = MyIncludeComponent.class),
excludeFilters = @Filter(classes = MyExcludeComponent.class)
)
static class ComponentFilterAppConfig{
}
'프로그래밍 > Spring' 카테고리의 다른 글
조회 대상 빈이 2개 이상인 경우 (@Primary, @Qualifier) (0) | 2022.06.13 |
---|---|
생성자 주입을 사용하는 이유 (+ 최신 트렌드 feat. 스프링 핵심 원리 - 기본편) (0) | 2022.06.12 |
컴포넌트 스캔과 의존관계 주입 (@ComponentScan, @Autowired) (0) | 2022.06.10 |
@Configuration의 이해 - 스프링의 싱글톤 (0) | 2022.06.10 |
싱글톤 (1) | 2022.06.10 |