作為spring boot的精髓,自動配置原理的工作過程往往只有在「面試」的時候才能用得上,但是如果在工作中你能夠深入的理解spring boot的自動配置原理,將無往不利。
spring boot的出現,得益於「習慣優於配置」的理念,沒有繁瑣的配置、難以整合的內容(大多數流行第三方技術都被整合),這是基於spring 4.x提供的按條件配置bean的能力。
示例:
那麼問題來了:這些配置是如何在spring boot專案中生效的呢?那麼接下來,就需要聚焦本篇部落格的主題:自動配置工作原理或者叫實現方式。
spring boot關於自動配置的原始碼在spring-boot-autoconfigure-x.x.x.x.jar中:
1.@configuration的註解類標識這個類可以使用spring ioc容器作為bean定義的**。@bean註解告訴spring,乙個帶有@bean的註解方法將返回乙個物件,該物件應該被註冊為在spring應用程式上下文中的bean。
2、@enableautoconfiguration:能夠自動配置spring的上下文,試圖猜測和配置你想要的bean類,通常會自動根據你的類路徑和你的bean定義自動配置。
3、@componentscan:會自動掃瞄指定包下的全部標有@component的類,並註冊成bean,當然包括@component下的子註解@service,@repository,@controller。
我們檢視@enableautoconfiguration註解 ,會發現他引入了個 類
進入autoconfigurationimportselector類中,我們會發現 有這個方法 如圖
protected
list
<
string
>
getcandidateconfigurations
(annotationmetadata
metadata
,annotationattributes
attributes
)
出現報錯 從中我們可以推出 @enableautoconfiguration註解 如何自動裝配了
「no auto configuration classes found in meta-inf/spring.factories. if you are using a custom packaging, make sure that file is correct.」
翻譯:在meta-inf/spring.factories中找不到自動配置類。如果使用自定義打包,請確保檔案正確無誤。
Spring boot自動配置
1 從原始碼角度看spring boot 自動配置 這個方法呼叫的是 initialize sources suppresswarnings private void initialize object sources this.webenvironment deducewebenvironment...
Spring Boot 自動配置
在spring中假設我們要使用乙個資料來源,必須在配置datasource才能使用,但是使用了spring boot這些就不存在了,相當於spring boot為我們做了很多配置的工作。spring 4提供了乙個更通用的基於條件的bean的建立方式,即使用 conditional 實現conditi...
springboot自動配置
springboot 一.切換條件condition 1.配置類加 configuration,返回值為所需實體類的方法加 bean 2.實體類方法加 conditional x.class 3.類實現condition類重寫它的public boolean matches conditioncon...