這篇文章主要講解了Spring基于@Conditional條件化裝配bean的方法,內(nèi)容清晰明了,對此有興趣的小伙伴可以學(xué)習(xí)一下,相信大家閱讀完之后會有幫助。
目前創(chuàng)新互聯(lián)公司已為數(shù)千家的企業(yè)提供了網(wǎng)站建設(shè)、域名、網(wǎng)頁空間、網(wǎng)站托管、企業(yè)網(wǎng)站設(shè)計、沈陽網(wǎng)站維護(hù)等服務(wù),公司將堅持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。
一 前言
理解spring的如何根據(jù)條件裝配bean有助于我們更好使用springboot進(jìn)行開發(fā),和源碼理解;
二 @Conditional 裝配bean
思路如下
Spring中提供了@Conditional注解實現(xiàn)條件化是否裝配bean,這樣可以根據(jù)條件動態(tài)的裝配bean;
要判定@Conditional 注解是否該裝配bean還需要Condition 接口配合,我們只須實現(xiàn) Condition 接口,重寫matches 方法;
根據(jù)matches方法返回的布爾值進(jìn)行判定@Conditional是否需要裝配bean
實現(xiàn)過程如下
2.1 用戶類
用戶類用于配置類是否裝配該Bean
/** * @Author lsc * <p> </p> */ public class User { private String userName; // 省略 set get }
2.2 Condition實現(xiàn)類
RuntimeExist 實現(xiàn) Condition ,使用 conditionContext 獲取jvm 環(huán)境變量,如果存在則返回 true ,否則返回false;其中conditionContext還有如下方法
public class RuntimeExist implements Condition { public boolean matches(ConditionContext conditionContext, AnnotatedTypeMetadata annotatedTypeMetadata) { // 獲取jvm 運行時環(huán)境 Environment environment = conditionContext.getEnvironment(); // 檢查 jvm 運行時環(huán)境是否存在屬性 return environment.containsProperty("java.runtime.name"); } }
2.3 用戶配置類
根據(jù) RuntimeExist的 matches 方法的返回值 是否裝配bean; 這邊設(shè)置了屬性名稱 zszxz,以便于更好的測試;
/** * @Author lsc * <p> </p> */ @Configuration public class UserConfig { @Bean // 根據(jù) RuntimeExist的 matches 方法的返回值 是否裝配bean @Conditional(RuntimeExist.class) public User user(){ User user = new User(); user.setUserName("zszxz"); return user; } }
2.4 測試
由于 jvm 運行時環(huán)境存在 java.runtime.name 屬性 ,故會裝配成功,會打印出 zszxz ;
如果將 java.runtime.name 改為 任意jvm 運行時不存在的屬性 ,測試就會報異常;
@RunWith(SpringJUnit4ClassRunner.class)//創(chuàng)建spring應(yīng)用上下文 @ContextConfiguration(classes= UserConfig.class)//加載配置類 public class ConditionTest { @Autowired User user; @Test public void test(){ // zszxz System.out.println(user.getUserName()); } }
看完上述內(nèi)容,是不是對Spring基于@Conditional條件化裝配bean的方法有進(jìn)一步的了解,如果還想學(xué)習(xí)更多內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。
分享標(biāo)題:Spring基于@Conditional條件化裝配bean的方法
當(dāng)前路徑:http://muchs.cn/article18/jpjdgp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供虛擬主機(jī)、App設(shè)計、App開發(fā)、微信小程序、ChatGPT、搜索引擎優(yōu)化
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)