spring boot 約定大于配置詳解

別小看@SpringBootApplication

SpringBoot的啟動類頭上都會帶著@SpringBootApplication注解。先來看看@SpringBootApplication里面有什么。

包括耳熟能詳?shù)腀ComponentScan 組件掃描注解和@SpringBootConfiguration 配置類注解。而中間的@EnableAutoConfiguration 正是實現(xiàn)約定大于配置的關(guān)鍵。

@EnableAutoCon?guration

作用:將類路徑下 META-INF/spring.factories 里面配置的所有EnableAutoCon?guration的值加入到了容器中。來看下SpringBoot的Jar包中有什么

可以看到配置了一堆的組件。隨便找一個進(jìn)去看看里面還有什么。


發(fā)現(xiàn)了一個和@EnableAutoCon?guration 及其相似的注解@EnableConfigurationProperties。有了@EnableConfigurationProperties 注解,該類就會在服務(wù)啟動時,被自動加載進(jìn)容器中。這就是為什么SpringBoot在啟動時,會自動加載大量配置類的原因了。

@Conditional派生注解

最后說下@Conditional派生注解是干嘛用的。

@ConditionalOnClass(xxxxx.class) - 判斷項目中是否有這個類

@ConditionalOnMissingBean(xxx.class) - 判斷容器中是否有這個組件

@ConditionalOnProperty(prefix = “xxx.xxx”, value = “default”, havingValue = “true”) - 判斷配置文件中是否存在某個配置,并賦上默認(rèn)值

@ConditionalOnWebApplication - 判斷當(dāng)前應(yīng)用是否是web應(yīng)用,如果是,當(dāng)前配置類生效

參考:https://blog.csdn.net/weixin_43776741/article/details/102502308

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容