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