ich eine Komponente, die ich von einem @ComponentScan
in einem bestimmten @Configuration
ausschließen möchten:ausschließen @Component von @ComponentScan
@Component("foo") class Foo {
...
}
Ansonsten scheint es mit einer anderen Klasse in meinem Projekt zu kollidieren. Ich verstehe die Kollision nicht vollständig, aber wenn ich die @Component
Anmerkung auskommentiere, funktionieren die Dinge so, wie ich es möchte. Aber andere Projekte, die auf diese Bibliothek angewiesen sind, erwarten, dass diese Klasse von Spring verwaltet wird. Daher möchte ich sie nur in meinem Projekt überspringen.
Ich versuchte @ComponentScan.Filter
mit:
@Configuration
@EnableSpringConfigured
@ComponentScan(basePackages = {"com.example"}, excludeFilters={
@ComponentScan.Filter(type=FilterType.ASSIGNABLE_TYPE, value=Foo.class)})
public class MySpringConfiguration {}
aber es scheint nicht zu funktionieren. Wenn ich FilterType.ASSIGNABLE_TYPE
Versuche Sie sich mit, erhalte ich einen seltsamen Fehler über nicht in der Lage etwas scheinbar zufällige Klasse zu laden:
Verursacht durch: java.io.FileNotFoundException: Classpath Ressource [junit/Rahmen/TestCase.class] kann nicht sein, geöffnet, weil es nicht
existiert
ich habe auch versucht type=FilterType.CUSTOM
wie folgt verwendet:
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 {}
Aber das scheint nicht die Komponente aus dem Scan ausschließen, wie ich will.
Wie schließe ich es aus?
können Sie die Antwort annehmen, wenn eine für Sie arbeitete? –