Spring中@ConditionalOnProperty注解的作用詳解
@ConditionalOnProperty注解
@ConditionalOnProperty注解主要是用來判斷配置文件中的內(nèi)容來決定配置類是否生效用的,如果條件不匹配,則配置類不生效
1. 源碼
@Retention(RetentionPolicy.RUNTIME)
@Target({ ElementType.TYPE, ElementType.METHOD })
@Documented
@Conditional(OnPropertyCondition.class)
public @interface ConditionalOnProperty {
// 數(shù)組,獲取對(duì)應(yīng)property名稱的值,與name不可同時(shí)使用
String[] value() default {};
// 配置屬性名稱的前綴,比如spring.http.encoding
String prefix() default "";
// 數(shù)組,配置屬性完整名稱或部分名稱
// 可與prefix組合使用,組成完整的配置屬性名稱,與value不可同時(shí)使用
String[] name() default {};
// 可與name組合使用,比較獲取到的屬性值與havingValue給定的值是否相同,相同才加載配置
String havingValue() default "";
// 缺少該配置屬性時(shí)是否可以加載。如果為true,沒有該配置屬性時(shí)也會(huì)正常加載;反之則不會(huì)生效
boolean matchIfMissing() default false;
}- String[] value():屬性的名字,可與prefix組合使用,不可以與name同時(shí)使用
- String prefix():屬性的前綴,可與name組合使用
- String[] name():屬性的名字,可與prefix組合使用
- String havingValue():指定屬性的值和havingValue相同才會(huì)加載配置
- boolean matchIfMissing():缺少該配置屬性是否可以加載,默認(rèn)flase,如果少了不能加載;設(shè)置為true則缺少也可以加載
2. 范例
以swagger配置來舉例
配置文件
swagger: enabled: true
代碼
@EnableSwagger2
@Configuration
@ConditionalOnProperty(name = "swagger.enabled", havingValue = "true") // 如果配置文件中swagger.enabled的值為false,那么havingValue返回結(jié)果為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());
}
}到此這篇關(guān)于Spring中@ConditionalOnProperty注解的作用詳解的文章就介紹到這了,更多相關(guān)@ConditionalOnProperty注解內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java LinkedHashMap 底層實(shí)現(xiàn)原理分析
LinkedHashMap繼承自HashMap實(shí)現(xiàn)了Map接口?;緦?shí)現(xiàn)同HashMap一樣,不同之處在于LinkedHashMap保證了迭代的有序性。其內(nèi)部維護(hù)了一個(gè)雙向鏈表,解決了 HashMap不能隨時(shí)保持遍歷順序和插入順序一致的問題。2021-05-05
spring?boot整合mongo查詢converter異常排查記錄
這篇文章主要為大家介紹了spring?boot整合mongo查詢時(shí)拋出converter異常的排查解決記錄,有需要的朋友可以借鑒參考下,希望能夠有所幫助2022-03-03
關(guān)于MyBatis模糊查詢的幾種實(shí)現(xiàn)方式
在實(shí)際項(xiàng)目中,我們會(huì)經(jīng)常對(duì)數(shù)據(jù)做一些模糊查詢的操作,這時(shí)候就需要利用到 like字段,那么在Mybatis中,有哪些方式可以實(shí)現(xiàn)模糊查詢呢,需要的朋友可以參考下2023-05-05
java之a(chǎn)ssert關(guān)鍵字用法案例詳解
這篇文章主要介紹了java之a(chǎn)ssert關(guān)鍵字用法案例詳解,本篇文章通過簡要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-08-08

