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; }
- String[] value():属性的名字,可与prefix组合使用,不可以与name同时使用
- String prefix():属性的前缀,可与name组合使用
- String[] name():属性的名字,可与prefix组合使用
- String havingValue():指定属性的值和havingValue相同才会加载配置
- 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注解内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
Java中的FilterOutputStream 简介_动力节点Java学院整理
FilterOutputStream 的作用是用来“封装其它的输出流,并为它们提供额外的功能”。它主要包括BufferedOutputStream, DataOutputStream和PrintStream。接下来通过本文给大家简单介绍下FilterOutputStream知识,需要的朋友参考下吧2017-05-05基于ChatGPT+SpringBoot实现智能聊天AI机器人接口并上线至服务器的方法
ChatGPT是一款基于自然语言处理技术的聊天机器人,ChatGPT可以模拟真实的人类对话,并能够更贴近用户的需求,提供更有价值的服务,这篇文章主要介绍了基于ChatGPT+SpringBoot实现智能聊天AI机器人接口并上线至服务器,需要的朋友可以参考下2023-02-02Mybatis-Plus字段策略FieldStrategy的使用
本文主要介绍了Mybatis-Plus字段策略FieldStrategy的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2022-08-08
最新评论