Spring中@ConditionalOnProperty注解的作用详解
作者: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注解内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!