深入理解条件过滤Conditional
生活随笔
收集整理的這篇文章主要介紹了
深入理解条件过滤Conditional
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
在分析AutoConfigurationImportSelector的源碼時(shí),會(huì)先掃描spring-autoconfiguration-metadata.properties文件,最后在掃描spring.factories對(duì)應(yīng)的類時(shí),會(huì)結(jié)合前面的元數(shù)據(jù)進(jìn)行過濾,為什么要過濾呢??原因是很多的@Configuration其實(shí)是依托于其他的框架來(lái)加載的,如果當(dāng)前的classpath環(huán)境下沒有相關(guān)聯(lián)的依賴,則意味著這些類沒必要進(jìn)行加載,所以,通過這種條件過濾可以有效的減少@configuration類的數(shù)量從而降低SpringBoot的啟動(dòng)時(shí)間。?
Conditional中的其他注解?
| @ConditionalOnBean | 在存在某個(gè)bean的時(shí)候 |
| @ConditionalOnMissingBean | 不存在某個(gè)bean的時(shí)候 |
| @ConditionalOnClass | 當(dāng)前classpath可以找到某個(gè)類型的類時(shí) |
| @ConditionalOnMissingClass | 當(dāng)前classpath不可以找到某個(gè)類型的類時(shí) |
| @ConditionalOnResource | 當(dāng)前classpath是否存在某個(gè)資源文件 |
| @ConditionalOnProperty | 當(dāng)前jvm是否包含某個(gè)系統(tǒng)屬性為某個(gè)值 |
| @ConditionalOnWebApplication | 當(dāng)前spring context是否是web應(yīng)用程序 |
?
總結(jié)
以上是生活随笔為你收集整理的深入理解条件过滤Conditional的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Spring框架中的SpringFact
- 下一篇: 什么是Starter