Ben çıkarmak istediğiniz bir bileşene sahip @ComponentScan
bir özellikle @Configuration
:
@Component("foo") class Foo {
...
}
Aksi takdirde, projemdeki başka bir sınıfla çatışıyor gibi görünüyor. Çarpışmayı tam olarak anlamıyorum, ancak @Component
ek açıklamayı yorumlarsam işler istediğim gibi çalışır. Ancak bu kitaplığa dayanan diğer projeler bu sınıfın Spring tarafından yönetilmesini bekliyor, bu yüzden onu sadece projemde atlamak istiyorum.
Kullanmayı denedim @ComponentScan.Filter
:
@Configuration
@EnableSpringConfigured
@ComponentScan(basePackages = {"com.example"}, excludeFilters={
@ComponentScan.Filter(type=FilterType.ASSIGNABLE_TYPE, value=Foo.class)})
public class MySpringConfiguration {}
ama işe yaramıyor gibi görünüyor. Kullanmayı FilterType.ASSIGNABLE_TYPE
denersem, rastgele görünen bazı sınıfları yükleyememe konusunda garip bir hata alıyorum:
Neden olduğu: java.io.FileNotFoundException: sınıf yolu kaynağı [junit / framework / TestCase.class], mevcut olmadığı için açılamıyor
Ayrıca type=FilterType.CUSTOM
aşağıdaki gibi kullanmayı da denedim :
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 {}
Ancak bu, bileşeni istediğim gibi taramanın dışında bırakmıyor gibi görünüyor.
Nasıl hariç tutabilirim?