Die javadoc auf ConditionalOnClass.value
gibt die Antwort:
Die Klassen, die vorhanden sein müssen. Da diese Annotation von geladen wird Klassenklasse Bytecode, ist es sicher, Klassen hier angeben, die letztlich nicht auf dem Klassenpfad sein, nur wenn diese Annotation direkt auf der betroffenen Komponente ist und nicht, wenn diese Annotation als zusammengesetzt verwendet wird , Meta-Annotation. Um diese Annotation als Meta-Annotation zu verwenden, verwenden Sie nur das name-Attribut.
Auch bei der Kompilierung Sie solche Klassen auf dem Classpath müssen verwenden Sie das value
Attribut ConditionalOnClass
müssen.
Spring-Boot verwendet optionale Abhängigkeiten, um dies zu erreichen. In Maven sieht das dies wie:
<dependency>
<groupId>com.atomikos</groupId>
<artifactId>transactions-jdbc</artifactId>
<version>4.0.4</version>
<scope>compile</scope>
<optional>true</optional>
</dependency>
In gradle Sie in der Regel verwenden compileOnly dies zu erreichen.
Oh, ich sehe, vielen Dank. –