@Configuration
@ComponentScan(
basePackageClasses = AppConfig.class,
excludeFilters = @ComponentScan.Filter(type= FilterType.ANNOTATION,classes = Configuration.class)
)
public class AutoAppConfig {
}
필터는 이미 쓴 적 있다.
타입은 Annotation이 기본이므로, 빼도 괜찮다.
@Configuration
@ComponentScan(
basePackageClasses = AppConfig.class,
excludeFilters = @ComponentScan.Filter(type= FilterType.ANNOTATION,classes = Configuration.class),
includeFilters = @ComponentScan.Filter(type= FilterType.ANNOTATION,classes = Include.class)
)
public class AutoAppConfig {
}
include 필터 라는 것 도 있다.
저 후, excludeFilters 로 제외한 컴포넌트들은 Bean에 등록이 안되어, getBean으로 조회할 수 없다.
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface MyIncludeComponent {
}
직접 Annotation을 만들 수 있다. @MyIncludeComponent 이렇게 붙여서 쓴다. @Component랑 똑같이.
@Target이 중요한데, Type이 TYPE이면 클래스 레벨에 붙는다는 소리다 (잘 모르겠다. 그러니까 추상체가 아니고 클래스 레벨?)
앞서 Filter의 타입에 대해 다시 보면,
Annotation
Assingnable type
Aspectj
Regex
Custom
이렇게 있다.
Annotation : 디폴트
Assingnable type : 지정한 타입과 그 자식까지
Aspectj : Aspectj 패턴으로 찾아온다고 한다. 뭔소린지 모르겠다.
Regex : 정규표현식
Custom : 이거는 아예 자기가 Filter의 조건을 구현해 만들 수 있다고 한다.
'스프링 > 1. 스프링 핵심 원리' 카테고리의 다른 글
33강. 의존자 주입 방법들 (0) | 2023.07.22 |
---|---|
32강. 충돌, 중복등록 (0) | 2023.07.21 |
29강. 컴포넌트 스캔 (0) | 2023.07.20 |
28강. @Configuration가 싱글톤을 보장해주는 방식 (0) | 2023.07.20 |
27강. 스프링 컨테이너와 싱글톤 (0) | 2023.07.18 |