中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

Spring中@Conditional條件注解如何使用

發布時間:2021-08-06 15:06:51 來源:億速云 閱讀:163 作者:Leah 欄目:編程語言

這篇文章將為大家詳細講解有關Spring中@Conditional條件注解如何使用,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。


@Conditional 元注解源

Spring中@Conditional條件注解如何使用

Spring中@Conditional條件注解如何使用

Conditional 接口源碼

我們看到 @Conditional 注解接收的參數是 extends Condition 接口的泛型類,也就是說,我們要使用 @Conditional 注解,只需要實現 Condition 接口并重寫其方法即可:

Spring中@Conditional條件注解如何使用

Spring中@Conditional條件注解如何使用

簡單找下Spring家族其他的案例實現SpringBootCondition

Spring中@Conditional條件注解如何使用

Spring中@Conditional條件注解如何使用

Spring Boot使用的所有Condition實現的基礎。提供合理的日志記錄,以幫助用戶診斷要加載的類。

無意中在網上看到一種比較形象的理解:如果將Application Context 比作大廳,Spring Boot 在 @Conditional 注解的基礎上進行了細化,無需出示復雜的介紹信 (實現 Condition 接口),只需要手持預定義好的 @ConditionalOnXxxx 注解印章的門票,如果驗證通過,就會走進 Application Context 大廳SpringBoot Condition 拓展實現

Spring中@Conditional條件注解如何使用

逐個打開這 13 個注解,我們發現這些注解上有相同的元注解

Spring中@Conditional條件注解如何使用

從這些標記上我們可以了解如下內容:

  • 都可以應用在 TYPE 上,也就是說,Spring 自動掃描的一切類 (@Configuration, @Component, @Service, @Repository, or @Controller) 都可以通過添加相應的 @ConditionalOnXxxx 來判斷是否加載

  • 都可以應用在 METHOD 上,所以有 @Bean 標記的方法也可以應用這些注解

  • 都是用了 @Conditional 注解來標記,OnBeanCondition 等自定義 Condition 還是實現了 Condition 接口的,換湯不換藥,沒什么神秘的,只不過做了更具象的封裝罷了,來看類依賴圖(簡化的類圖)

Spring中@Conditional條件注解如何使用

其實用法都大同小異,看了源碼以后發現原理很簡單,這里簡單歸納下用法:

除了自己自定義Condition之外,Spring還提供了很多Condition給我們用

  • @ConditionalOnBean
    僅僅在當前上下文中存在某個對象時,才會實例化一個Bean

  • @ConditionalOnClass
    某個class位于類路徑上,才會實例化一個Bean

  • @ConditionalOnExpression
    當表達式為true的時候,才會實例化一個Bean

  • @ConditionalOnMissingBean
    僅僅在當前上下文中不存在某個對象時,才會實例化一個Bean

  • @ConditionalOnMissingClass
    某個class類路徑上不存在的時候,才會實例化一個Bean

  • @ConditionalOnNotWebApplication
    不是web應用

  • @ConditionalOnProperty
    指在配置里配置的屬性是否為true,才會實例化一個Bean)

  • @ConditionalOnResource
    如果我們要加載的 bean 依賴指定資源是否存在于 classpath 中,那么我們就可以使用這個注解

  • @ConditionalOnJndi
    只有指定的資源通過 JNDI 加載后才加載 bean

  • @ConditionalOnCloudPlatform
    只有運行在指定的云平臺上才加載指定的 bean,CloudPlatform 是 org.springframework.boot.cloud 下一個 enum 類型的類,大家可以打開自行看看

關于Spring中@Conditional條件注解如何使用就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

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

AI

绥宁县| 新安县| 屏东市| 黄梅县| 塔河县| 石景山区| 天全县| 洛川县| 荆州市| 锡林郭勒盟| 松江区| 田林县| 银川市| 清苑县| 焦作市| 确山县| 武定县| 遵义县| 合川市| 玉溪市| 慈利县| 成武县| 延吉市| 霍山县| 丰县| 兰坪| 彰化县| 资中县| 荣成市| 仙居县| 英超| 蒙阴县| 玛沁县| 永寿县| 鹰潭市| 张北县| 保康县| 青河县| 济阳县| 甘孜县| 霸州市|