Spring中@ConditionalOnProperty注解的作用详解
目录
- @ConditionalOnProperty注解
- 1. 源码
- 2. 范例
@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():缺少javascript该配置属性是否可以WYgJmAhK加载,默认flase,如果少了不能加载;设置为true则缺少也可以加载
2. 范例
以swagger配置来举例
配置文件
swagger: enabled: true
代码
@EnableSwagg编程客栈er2 @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")javascript .genericModelSubstitutes(DeferredResult.class) www.devze.com .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注解内容请搜索编程客栈(www.devze.com)以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程客栈(www.devze.com)!
精彩评论