Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring boot SpringBoot@ConditionalOnClass如何工作?_Spring Boot - Fatal编程技术网

Spring boot SpringBoot@ConditionalOnClass如何工作?

Spring boot SpringBoot@ConditionalOnClass如何工作?,spring-boot,Spring Boot,例如,HttpEncodingAutoConfiguration用@ConditionalOnClass(CharacterEncodingFilter.class)注释 关于@ConditionalOnClass,我所知道的是承诺在类路径中使用CharacterEncodingFilter,但是如果类不在类路径中,它如何在编译或类加载时通过呢 非常感谢。ConditionalOnClass.value上的javadoc给出了答案: 必须出现的类。因为此注释是由 在加载类字节码时,可以在此处安全

例如,HttpEncodingAutoConfiguration用@ConditionalOnClass(CharacterEncodingFilter.class)注释

关于@ConditionalOnClass,我所知道的是承诺在类路径中使用CharacterEncodingFilter,但是如果类不在类路径中,它如何在编译或类加载时通过呢


非常感谢。

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
为了实现这一点