Wie funktioniert Spring-Boot @ConditionalOnClass?

8

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:

%Vor%

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 ...

    
membersound 11.09.2014, 14:19
quelle

1 Antwort

10

Guter Fang!

Sie können auf der Methodenebene @Bean verwenden, aber in diesem Fall müssen Sie Ihre Klasse als Literal angeben:

%Vor%

Ich erinnere mich nicht schon "warum", aber es ist von einem vorhandenen Code von Spring Boot Quellen.

    
Artem Bilan 11.09.2014, 14:52
quelle

Tags und Links