gpt4 book ai didi

spring-boot - SpringBoot @ConditionalOnClass 如何工作?

转载 作者:行者123 更新时间:2023-12-03 07:45:13 25 4
gpt4 key购买 nike

例如,HttpEncodingAutoConfiguration使用@ConditionalOnClass(CharacterEncodingFilter.class)进行注释。

我对@ConditionalOnClass的了解是在类路径中 promise CharacterEncodingFilter,但是如果该类不在类路径中,它如何在编译或类加载时通过。

非常感谢。

最佳答案

ConditionalOnClass.value 上的 javadoc 给出了答案:

The classes that must be present. Since this annotation is parsed by loading class bytecode, it is safe to specify classes here that may ultimately not be on the classpath, only if this annotation is directly on the affected component and not if this annotation is used as a composed, meta-annotation. In order to use this annotation as a meta-annotation, only use the name attribute.

此外,在编译时,您必须在类路径上拥有此类类才能使用 ConditionalOnClassvalue 属性。

Spring-boot 使用可选的依赖项来实现这一点。在 Maven 中,它看起来像这样:

<dependency>
<groupId>com.atomikos</groupId>
<artifactId>transactions-jdbc</artifactId>
<version>4.0.4</version>
<scope>compile</scope>
<optional>true</optional>
</dependency>

在gradle中你通常使用compileOnly来实现这一目标。

关于spring-boot - SpringBoot @ConditionalOnClass 如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47787538/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com