當前位置:
首頁 >
前端技术
> javascript
>内容正文
javascript
SpringBoot中Bean按条件装配
生活随笔
收集整理的這篇文章主要介紹了
SpringBoot中Bean按条件装配
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
@Conditional條件裝配
- @Conditional是Spring Framework提供的一個核心功能注解,這個注解的作用是提供自動裝配的條件限制,一般我們在用@Configuration,@Bean的時候使用它。
- 也就是我們在自定義Bean的注入的時候,我們可以通過@Condition來對bean的注入增加邏輯判斷,符合我們要求的我們才讓他自動裝配
@Conditional 的使用
- 如下注解源碼是@Condition
-
condition是一個函數式接口,提供了一個matches方法,主要提供一個條件匹配的規則,返回表示是否可以注入Bean。
-
@Conditional 的注解來聲明如下,他可以接受接收一個Condition的數組
Conditional使用Demo
- 我們通過對以上Conditional的了解來自己實現一個Bean的按自定義條件的裝配:
- 定義一個Condition,判斷系統來返回是否裝配:
- 定義配置類,裝載一個BeanTestClass
- 如上,我們在BeanTestClass上增加了一個@Conditional(GpCondition.class),其中的具體條件就是我們自定義的注入限制條件類。
- 意思就是,當條件滿足我們定義的GpCondition的時候,我們就注入,否則不注入。
- 依然在Application啟動類中添加對新定義Bean的獲取,如下
- 當我們在Mac os上運行,有如下結果
Spring Boot 中的@Conditional
-
在SpringBoot中,有針對@Conditional的擴展,提供了更簡單的使用方式,擴張了各種類型的注解,如下:
- ConditionalOnBean/ConditionalOnMissBean 容器中存在或者不存在某個類的時候進行Bean加載
- ConditionalOnClass/ConditionalOnMissClass:classpath下存在或者不存在指定類的時候進行Bean加載
- ConditionalOnCloudPlatform:只允許在指定的云平臺上才加載指定Bean
- ConditionalOnExpression:基于SpEl表達式的條件判斷
- ConditionalOnJava:只允許在指定版本Java才加載Bean
- ConditionalOnJndi:只有指定資源通過JNDI加載后才加載Bean
- ConditionalOnWebApplication/ConsitionalOnNotWebApplication:如果是活著不是web應用才加載指定的Bean
- ConditionalOnProperty:系統中指定對呀的屬性是否有對應值
- ConditionOnResource:要加載的Bean依賴指定資源是否存在于classpath
- ConditionOnSingleCandidate:只有在確定了給定Bean的單個候選項時候才會加載Bean
-
以上這些都在spring-boot-autoconfiguration.jar 中
其他注入方式spring-autoconfigure-metadata
-
除了@Conditional注解。Spring Boot中提供了spring-autoconfigure-metadata.properties文件來實現批量自動裝配條件配置
-
與@Conditional意義,只是將條件放在的文件,我們可以在spring-boot-autoconfigure.jar中找到這種配置
-
同樣遵循“約定由于配置”,通過這種配置實現條件過濾需保證兩個前提條件:
- 如上圖中,文件路徑名稱必須是/META-INF/spring-autoconfigure-metadata.properties
- 配置文件的key’的配置格式:自動配置類的類全路徑名.條件 = 值
-
這種配置優點在于可以有效降低Spring Boot啟動時間,通過這種過濾方式減少配置陪的加載數量,因為這個過濾發生在配置類的裝載之前,所以他可以降低Spring Boot啟動時裝載Bean的耗時
上一篇:SpringBoot自動裝配源碼解析
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的SpringBoot中Bean按条件装配的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 山楂蜂蜜水的功效与作用、禁忌和食用方法
- 下一篇: 秋葵炒鸡蛋的功效与作用、禁忌和食用方法