필터

includeFilters : 컴포넌트 스캔 대상을 추가로 지정한다. excludeFilters : 컴포넌트 스캔에서 제외할 대상을 지정한다.

테스트 코드 예시

FilterType 5가지 옵션

  1. ANNOTATION: 기본값, 애노테이션을 인식해서 동작한다. ex) org.example.SomeAnnotation

  2. ASSIGNABLE_TYPE: 지정한 타입과 자식 타입을 인식해서 동작한다. ex) org.example.SomeClass

  3. ASPECTJ: AspectJ 패턴 사용 ex) org.example..*Service+

  4. REGEX: 정규 표현식 ex) org\.example\.Default.*

  5. CUSTOM: TypeFilter 이라는 인터페이스를 구현해서 처리 ex) org.example.MyTypeFilter

BeanA : includeFilters, BeanB : excludeFilters인데 BeanA도 excludeFilters 하고 싶다면 아래처럼 하면 된다.

@ComponentScan(
      includeFilters = {
            @Filter(type = FilterType.ANNOTATION, classes =
    MyIncludeComponent.class),
      },
      excludeFilters = {
            @Filter(type = FilterType.ANNOTATION, classes =
    MyExcludeComponent.class),
            @Filter(type = FilterType.ASSIGNABLE_TYPE, classes = BeanA.class)
      }
)
  • 참고: @Component 면 충분하기 때문에, includeFilters 를 사용할 일은 거의 없다. excludeFilters 는 여러가지 이유로 간혹 사용할 때가 있지만 많지는 않다.

Last updated

Was this helpful?