Wie genau funktioniert die @ConditionalOnClass
Annotation?
Mein Ziel ist es, eine bestimmte Bean nur dann zu laden, wenn das jar
, das diese Klasse bereitstellt, im Klassenpfad enthalten ist.
Ich konnte zwar ein @Bean
mit @ConditionalOnClass(MyService.class)
kommentieren und die Abhängigkeit in maven als optional deklarieren:
Nun sollte jeder, der my-framework
als Abhängigkeit hat, diese Bean automatisch verdrahten lassen. Aber jeder, der die Abhängigkeit nicht hat, sollte es überspringen.
Aber wenn ich die App starte, erhalte ich den folgenden Fehler:
%Vor%Also mache ich wahrscheinlich etwas falsch. Wie kann ich dann die Bean-Bedingung für die Abhängigkeits-Jars und die im Klassenpfad enthaltenen Klassen erstellen?
Aus der Federdokumentation:
%Vor%Aber der Fehler sagt anders ...
Guter Fang!
Sie können auf der Methodenebene @Bean
verwenden, aber in diesem Fall müssen Sie Ihre Klasse als Literal angeben:
Ich erinnere mich nicht schon "warum", aber es ist von einem vorhandenen Code von Spring Boot Quellen.
Tags und Links java spring spring-boot