Spring boot SpringBoot@ConditionalOnClass如何工作?
例如,HttpEncodingAutoConfiguration用@ConditionalOnClass(CharacterEncodingFilter.class)注释 关于@ConditionalOnClass,我所知道的是承诺在类路径中使用CharacterEncodingFilter,但是如果类不在类路径中,它如何在编译或类加载时通过呢Spring boot SpringBoot@ConditionalOnClass如何工作?,spring-boot,Spring Boot,例如,HttpEncodingAutoConfiguration用@ConditionalOnClass(CharacterEncodingFilter.class)注释 关于@ConditionalOnClass,我所知道的是承诺在类路径中使用CharacterEncodingFilter,但是如果类不在类路径中,它如何在编译或类加载时通过呢 非常感谢。ConditionalOnClass.value上的javadoc给出了答案: 必须出现的类。因为此注释是由 在加载类字节码时,可以在此处安全
非常感谢。ConditionalOnClass.value上的javadoc给出了答案: 必须出现的类。因为此注释是由 在加载类字节码时,可以在此处安全地指定可能 最终不在类路径上,仅当此注释是 直接在受影响的零部件上,而不是在使用此注释时 作为一个合成的元注释。要将此批注用作 元注释,仅使用name属性 同样在编译时,您必须在类路径上有这样的类才能使用
ConditionalOnClass
的value
属性
SpringBoot使用可选的依赖项来实现这一点。在maven中,如下所示:
<dependency>
<groupId>com.atomikos</groupId>
<artifactId>transactions-jdbc</artifactId>
<version>4.0.4</version>
<scope>compile</scope>
<optional>true</optional>
</dependency>
com.atomikos
为了实现这一点