91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Spring基于@Conditional條件化裝配bean的方法

發布時間:2020-08-01 15:00:13 來源:億速云 閱讀:192 作者:小豬 欄目:編程語言

這篇文章主要講解了Spring基于@Conditional條件化裝配bean的方法,內容清晰明了,對此有興趣的小伙伴可以學習一下,相信大家閱讀完之后會有幫助。

一 前言

理解spring的如何根據條件裝配bean有助于我們更好使用springboot進行開發,和源碼理解;

@Conditional 裝配bean

思路如下

Spring中提供了@Conditional注解實現條件化是否裝配bean,這樣可以根據條件動態的裝配bean;

要判定@Conditional 注解是否該裝配bean還需要Condition 接口配合,我們只須實現 Condition 接口,重寫matches 方法;

根據matches方法返回的布爾值進行判定@Conditional是否需要裝配bean

實現過程如下

2.1 用戶類

用戶類用于配置類是否裝配該Bean

/**
 * @Author lsc
 * <p> </p>
 */
public class User {

  private String userName;

	// 省略 set get
}

2.2 Condition實現類

RuntimeExist 實現 Condition ,使用 conditionContext 獲取jvm 環境變量,如果存在則返回 true ,否則返回false;其中conditionContext還有如下方法

  • getRegistry():使用BeanDefinitionRegistry的檢查bean定義;
  • getBeanFactory():使用ConfigurableListableBeanFactory檢查bean是否存在;
  • getEnvironment():Environment環境變量
  • getResourceLoader():ResourceLoader加載的資源;
  • getClassLoader():ClassLoader加載的類。
     
public class RuntimeExist implements Condition {
  public boolean matches(ConditionContext conditionContext, AnnotatedTypeMetadata annotatedTypeMetadata) {
    // 獲取jvm 運行時環境
    Environment environment = conditionContext.getEnvironment();
    // 檢查 jvm 運行時環境是否存在屬性
    return environment.containsProperty("java.runtime.name");
  }
}

2.3 用戶配置類

根據 RuntimeExist的 matches 方法的返回值 是否裝配bean; 這邊設置了屬性名稱 zszxz,以便于更好的測試;

/**
 * @Author lsc
 * <p> </p>
 */
@Configuration
public class UserConfig {

  @Bean
  // 根據 RuntimeExist的 matches 方法的返回值 是否裝配bean
  @Conditional(RuntimeExist.class)
  public User user(){
    User user = new User();
    user.setUserName("zszxz");
    return user;
  }
}

2.4 測試

由于 jvm 運行時環境存在 java.runtime.name 屬性 ,故會裝配成功,會打印出 zszxz ;

如果將 java.runtime.name 改為 任意jvm 運行時不存在的屬性 ,測試就會報異常;

@RunWith(SpringJUnit4ClassRunner.class)//創建spring應用上下文
@ContextConfiguration(classes= UserConfig.class)//加載配置類
public class ConditionTest {

  @Autowired
  User user;

  @Test
  public void test(){
    // zszxz
    System.out.println(user.getUserName());
  }
}

看完上述內容,是不是對Spring基于@Conditional條件化裝配bean的方法有進一步的了解,如果還想學習更多內容,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

吴旗县| 临清市| 会昌县| 辽中县| 习水县| 南川市| 乐业县| 景德镇市| 潢川县| 渝北区| 鄂尔多斯市| 于田县| 苍山县| 沙河市| 荔浦县| 报价| 大丰市| 焉耆| 建始县| 六枝特区| 静安区| 油尖旺区| 峨眉山市| 巨鹿县| 临西县| 隆尧县| 台湾省| 静海县| 喀什市| 晴隆县| 泰宁县| 岱山县| 天津市| 毕节市| 祁东县| 长海县| 贵港市| 卓资县| 新津县| 安远县| 商南县|