@ComponentScan
특정에서 제외하려는 구성 요소가 있습니다 @Configuration
.
@Component("foo") class Foo {
...
}
그렇지 않으면 내 프로젝트의 다른 클래스와 충돌하는 것 같습니다. 충돌을 완전히 이해하지는 못하지만 @Component
주석을 달면 원하는대로 작동합니다. 그러나이 라이브러리에 의존하는 다른 프로젝트는이 클래스가 Spring에서 관리 될 것으로 예상하므로 내 프로젝트에서만 건너 뛰고 싶습니다.
나는 사용해 보았다 @ComponentScan.Filter
:
@Configuration
@EnableSpringConfigured
@ComponentScan(basePackages = {"com.example"}, excludeFilters={
@ComponentScan.Filter(type=FilterType.ASSIGNABLE_TYPE, value=Foo.class)})
public class MySpringConfiguration {}
하지만 작동하지 않는 것 같습니다. 을 사용하려고하면 FilterType.ASSIGNABLE_TYPE
임의의 클래스를로드 할 수 없다는 이상한 오류가 발생합니다.
원인 : java.io.FileNotFoundException : 클래스 경로 리소스 [junit / framework / TestCase.class]가 존재하지 않기 때문에 열 수 없습니다.
또한 type=FilterType.CUSTOM
다음과 같이 사용해 보았습니다 .
class ExcludeFooFilter implements TypeFilter {
@Override
public boolean match(MetadataReader metadataReader,
MetadataReaderFactory metadataReaderFactory) throws IOException {
return metadataReader.getClass() == Foo.class;
}
}
@Configuration @EnableSpringConfigured
@ComponentScan(basePackages = {"com.example"}, excludeFilters={
@ComponentScan.Filter(type=FilterType.ASSIGNABLE_TYPE, value=Foo.class)})
public class MySpringConfiguration {}
그러나 그것은 내가 원하는 것처럼 스캔에서 구성 요소를 제외하지 않는 것 같습니다.
어떻게 제외합니까?