исключить @Component из @ComponentScan
У меня есть компонент, который я хочу исключить из@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 {}
Но это, кажется, не исключает компонент из сканирования, как я хочу.
Как я могу исключить это?