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)文章
解決SpringBoot webSocket 資源無法加載、tomcat啟動(dòng)報(bào)錯(cuò)的問題
這篇文章主要介紹了解決SpringBoot webSocket 資源無法加載、tomcat啟動(dòng)報(bào)錯(cuò)的問題,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-11-11myBatis使用@GeneratedValue(generator?=?“...“,?strategy?=?
這篇文章主要介紹了myBatis使用@GeneratedValue(generator?=?“...“,?strategy?=?...)注解問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-07-07Spring整合mybatis實(shí)現(xiàn)過程詳解
這篇文章主要介紹了Spring整合mybatis實(shí)現(xiàn)過程詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-07-07解決Mybatis-plus自定義TypeHandler查詢映射結(jié)果一直為null問題
這篇文章主要介紹了解決Mybatis-plus自定義TypeHandler查詢映射結(jié)果一直為null問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-07-07java中的String定義的字面量最大長(zhǎng)度是多少
這篇文章主要介紹了java中的String定義的字面量最大長(zhǎng)度是多少,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-12-12Java?IO流與NIO技術(shù)綜合應(yīng)用詳細(xì)實(shí)例代碼
這篇文章主要給大家介紹了關(guān)于Java?IO流與NIO技術(shù)綜合應(yīng)用的相關(guān)資料,文中包括了字節(jié)流和字符流,以及它們的高級(jí)特性如緩沖區(qū)、序列化和反序列化,同時(shí)還介紹了NIO中的通道和緩沖區(qū),以及選擇器的使用,需要的朋友可以參考下2024-12-12mybatis教程之resultmap_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
這篇文章主要介紹了mybatis教程之resultmap,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-09-09Java學(xué)習(xí)-打印1-1000以內(nèi)的水仙花數(shù)代碼實(shí)例
這篇文章主要介紹了Java打印1-1000以內(nèi)的水仙花數(shù),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04Spring案例打印機(jī)的實(shí)現(xiàn)過程詳解
這篇文章主要介紹了Spring案例打印機(jī)的實(shí)現(xiàn)過程詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-10-10