Spring中@ConditionalOnProperty注解的作用详解

 更新时间:2024年01月19日 11:05:06   作者:bat在等我  
这篇文章主要介绍了Spring中@ConditionalOnProperty注解的作用详解,@ConditionalOnProperty注解主要是用来判断配置文件中的内容来决定配置类是否生效用的,如果条件不匹配,则配置类不生效,需要的朋友可以参考下

@ConditionalOnProperty注解

@ConditionalOnProperty注解主要是用来判断配置文件中的内容来决定配置类是否生效用的,如果条件不匹配,则配置类不生效

1. 源码

@Retention(RetentionPolicy.RUNTIME)
@Target({ ElementType.TYPE, ElementType.METHOD })
@Documented
@Conditional(OnPropertyCondition.class)
public @interface ConditionalOnProperty {
	// 数组,获取对应property名称的值,与name不可同时使用
	String[] value() default {};
	// 配置属性名称的前缀,比如spring.http.encoding
	String prefix() default "";
	// 数组,配置属性完整名称或部分名称
	// 可与prefix组合使用,组成完整的配置属性名称,与value不可同时使用
	String[] name() default {};
	// 可与name组合使用,比较获取到的属性值与havingValue给定的值是否相同,相同才加载配置
	String havingValue() default "";
	// 缺少该配置属性时是否可以加载。如果为true,没有该配置属性时也会正常加载;反之则不会生效
	boolean matchIfMissing() default false;
}
  1. String[] value():属性的名字,可与prefix组合使用,不可以与name同时使用
  2. String prefix():属性的前缀,可与name组合使用
  3. String[] name():属性的名字,可与prefix组合使用
  4. String havingValue():指定属性的值和havingValue相同才会加载配置
  5. boolean matchIfMissing():缺少该配置属性是否可以加载,默认flase,如果少了不能加载;设置为true则缺少也可以加载

2. 范例

以swagger配置来举例

配置文件

swagger:
  enabled: true

代码

@EnableSwagger2
@Configuration
@ConditionalOnProperty(name = "swagger.enabled", havingValue = "true") // 如果配置文件中swagger.enabled的值为false,那么havingValue返回结果为false,该配置类就不生效
public class ErpSwaggerConfig extends DefaultSwaggerConfig {
    @Bean
    public Docket erpApi() {
        return new Docket(DocumentationType.SWAGGER_2)
                .groupName("erp")
                .genericModelSubstitutes(DeferredResult.class)
                .useDefaultResponseMessages(false)
                .forCodeGeneration(false)
                .pathMapping("/")
                .select()
                .apis(RequestHandlerSelectors.basePackage("com.ztbase.erp.controller"))
                .paths(PathSelectors.any())
                .build()
                .securitySchemes(setSecuritySchemes())
                .globalOperationParameters(getHeaderParameters())
                .apiInfo(apiInfo());
    }
}

到此这篇关于Spring中@ConditionalOnProperty注解的作用详解的文章就介绍到这了,更多相关@ConditionalOnProperty注解内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 解决SpringBoot webSocket 资源无法加载、tomcat启动报错的问题

    解决SpringBoot webSocket 资源无法加载、tomcat启动报错的问题

    这篇文章主要介绍了解决SpringBoot webSocket 资源无法加载、tomcat启动报错的问题,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-11-11
  • myBatis使用@GeneratedValue(generator = “...“, strategy = ...)注解

    myBatis使用@GeneratedValue(generator = “...“, strategy = 

    这篇文章主要介绍了myBatis使用@GeneratedValue(generator = “...“, strategy = ...)注解问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-07-07
  • Spring整合mybatis实现过程详解

    Spring整合mybatis实现过程详解

    这篇文章主要介绍了Spring整合mybatis实现过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-07-07
  • 解决Mybatis-plus自定义TypeHandler查询映射结果一直为null问题

    解决Mybatis-plus自定义TypeHandler查询映射结果一直为null问题

    这篇文章主要介绍了解决Mybatis-plus自定义TypeHandler查询映射结果一直为null问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-07-07
  • Java字符编码解码的实现详解

    Java字符编码解码的实现详解

    本篇文章介绍了,Java字符编码解码的实现详解。需要的朋友参考下
    2013-05-05
  • java中的String定义的字面量最大长度是多少

    java中的String定义的字面量最大长度是多少

    这篇文章主要介绍了java中的String定义的字面量最大长度是多少,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-12-12
  • Java IO流与NIO技术综合应用详细实例代码

    Java IO流与NIO技术综合应用详细实例代码

    这篇文章主要给大家介绍了关于Java IO流与NIO技术综合应用的相关资料,文中包括了字节流和字符流,以及它们的高级特性如缓冲区、序列化和反序列化,同时还介绍了NIO中的通道和缓冲区,以及选择器的使用,需要的朋友可以参考下
    2024-12-12
  • mybatis教程之resultmap_动力节点Java学院整理

    mybatis教程之resultmap_动力节点Java学院整理

    这篇文章主要介绍了mybatis教程之resultmap,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-09-09
  • Java学习-打印1-1000以内的水仙花数代码实例

    Java学习-打印1-1000以内的水仙花数代码实例

    这篇文章主要介绍了Java打印1-1000以内的水仙花数,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-04-04
  • Spring案例打印机的实现过程详解

    Spring案例打印机的实现过程详解

    这篇文章主要介绍了Spring案例打印机的实现过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-10-10

最新评论