Saya memiliki komponen yang ingin saya kecualikan dari a @ComponentScansecara khusus @Configuration:
@Component("foo") class Foo {
...
}
Jika tidak, sepertinya akan bentrok dengan kelas lain dalam proyek saya. Saya tidak sepenuhnya memahami tabrakan, tetapi jika saya mengomentari @Componentanotasi, semuanya berfungsi seperti yang saya inginkan. Tetapi proyek lain yang mengandalkan pustaka ini mengharapkan kelas ini dikelola oleh Spring, jadi saya ingin melewatkannya hanya di proyek saya.
Saya mencoba menggunakan @ComponentScan.Filter:
@Configuration
@EnableSpringConfigured
@ComponentScan(basePackages = {"com.example"}, excludeFilters={
@ComponentScan.Filter(type=FilterType.ASSIGNABLE_TYPE, value=Foo.class)})
public class MySpringConfiguration {}
tetapi tampaknya tidak berhasil. Jika saya mencoba menggunakan FilterType.ASSIGNABLE_TYPE, saya mendapatkan kesalahan aneh tentang tidak dapat memuat beberapa kelas yang tampaknya acak:
Disebabkan oleh: java.io.FileNotFoundException: sumber daya jalur kelas [junit / framework / TestCase.class] tidak dapat dibuka karena tidak ada
Saya juga mencoba menggunakan type=FilterType.CUSTOMsebagai berikut:
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 {}
Tapi sepertinya itu tidak mengecualikan komponen dari pemindaian seperti yang saya inginkan.
Bagaimana cara mengecualikannya?