Spring在@ConditionalOnProperty注解使用詳解
簡(jiǎn)單介紹
@ConditionalOnProperty注解是Spring Boot的條件注解,主要用法是根據(jù)配置文件中的屬性來控制某個(gè)配置類是否生效,或者控制某個(gè)Bean是否被創(chuàng)建。
就比如我們常用的在yml中配置
server: port: 8080
能夠起到啟動(dòng)服務(wù)以8080端口啟動(dòng),而@ConditionalOnProperty注解則是符合條件注入到Bean中,下面結(jié)合一些案例代碼做出介紹。
@ConditionalOnProperty 注解中的屬性介紹
屬性名稱 | 介紹 |
prefix | 指定屬性前綴 |
name | 指定屬性名稱 |
havingValue | 用來指定期望的屬性值,如果配置的值等于期望值則執(zhí)行 |
matchIfMissing | 當(dāng)配置文件中不存在指定屬性時(shí)的處理方式,處理方式有兩個(gè),分別是 true 和 false, true 是不存在指定屬性時(shí)執(zhí)行,false 是不執(zhí)行,默認(rèn)是 false |
簡(jiǎn)單配置案例代碼
控制配置類
yml中配置以下信息:
biz: access: true
下面是配置類的代碼實(shí)現(xiàn):
@Configuration @ConditionalOnProperty(prefix = "biz", name = "access", havingValue = "true") public class AccessConfiguration implements HandlerInterceptor { }
這里需要注意的是,@ConditionalOnProperty注解只代表符合條件就執(zhí)行注入,不代表它有@Configuration注解的作用,所以想控制一個(gè)配置類是就需要有@ConditionalOnProperty和@Configuration注解。
控制Bean創(chuàng)建
那么當(dāng)我想想控制配置類中的某個(gè)Bean是否注入時(shí)該怎么做呢,看下面代碼示例: yml中配置以下信息:
biz: access: true
@Configuration public class AccessConfiguration implements HandlerInterceptor { @Bean @ConditionalOnProperty(prefix = "biz", name = "access", havingValue = "true") public YourBeanFile preHandle() { return new YourBeanFile(); } }
這樣就能控制某個(gè)Bean的創(chuàng)建了。
復(fù)雜配置案例代碼
控制配置類
yml中配置以下信息:
biz: access: token: true
下面是代碼實(shí)現(xiàn):
@Configuration @ConditionalOnProperty(prefix = "biz.access", name = "token", havingValue = "true") public class AccessConfiguration implements HandlerInterceptor { }
可以看到復(fù)雜的配置與簡(jiǎn)單的配置有些不太一樣,最后一個(gè)屬性才是在@ConditionalOnProperty注解的name屬性上。
控制Bean創(chuàng)建
yml中配置以下信息:
biz: access: token: true
代碼實(shí)現(xiàn):
@Configuration public class AccessConfiguration implements HandlerInterceptor { @Bean @ConditionalOnProperty(prefix = "biz.access", name = "token", havingValue = "true") public YourBeanFile preHandle() { return new YourBeanFile(); } }
到此這篇關(guān)于Spring在@ConditionalOnProperty注解使用詳解的文章就介紹到這了,更多相關(guān)@ConditionalOnProperty注解內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
IntelliJ IDEA修改新建文件自動(dòng)生成注釋的user名
今天小編就為大家分享一篇關(guān)于IntelliJ IDEA修改新建文件自動(dòng)生成注釋的user名,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧2018-10-10解決idea找不到類could not find artifact問題
本文總結(jié)了解決Java項(xiàng)目中找不到類的問題的常見解決方案,包括刷新Maven項(xiàng)目、清理IDEA緩存、Maven Clean Install、重新Package、解決依賴沖突和手動(dòng)導(dǎo)入依賴包等方法2025-01-01Spring Cloud中使用Feign,@RequestBody無法繼承的解決方案
這篇文章主要介紹了Spring Cloud中使用Feign,@RequestBody無法繼承的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-10-10java+jdbc+mysql+socket搭建局域網(wǎng)聊天室
這篇文章主要為大家詳細(xì)介紹了java+jdbc+mysql+socket搭建局域網(wǎng)聊天室,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-01-01springboot帶有進(jìn)度條的上傳功能完整實(shí)例
這篇文章主要介紹了springboot帶有進(jìn)度條的上傳功能,結(jié)合完整實(shí)例形式分析了springboot帶進(jìn)度條上傳的原理、實(shí)現(xiàn)步驟與相關(guān)操作技巧,需要的朋友可以參考下2019-11-11Spring Boot實(shí)現(xiàn)跨域訪問實(shí)現(xiàn)代碼
本文通過實(shí)例代碼給大家介紹了Spring Boot實(shí)現(xiàn)跨域訪問的知識(shí),然后在文中給大家介紹了spring boot 服務(wù)器端設(shè)置允許跨域訪問 的方法,感興趣的朋友一起看看吧2017-07-07利用Java如何獲取Mybatis動(dòng)態(tài)生成的sql接口實(shí)現(xiàn)
MyBatis 的強(qiáng)大特性之一便是它的動(dòng)態(tài)SQL,下面這篇文章主要給大家介紹了關(guān)于利用Java如何獲取Mybatis動(dòng)態(tài)生成的sql接口實(shí)現(xiàn)的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-01-01Java Swing JCheckBox復(fù)選框的實(shí)現(xiàn)方法
這篇文章主要介紹了Java Swing JCheckBox復(fù)選框的實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-12-12JAVA實(shí)現(xiàn)讀取txt文件內(nèi)容的方法
本篇文章主要介紹了JAVA實(shí)現(xiàn)讀取txt文件內(nèi)容的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-01-01