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