我首先看了一些部落格,大多數是這樣解釋的。
springboot 自動配置主要通過 @enableautoconfiguration, @conditional, @enableconfigurationproperties 或者 @configurationproperties 等幾個註解來進行自動配置完成的。
@enableautoconfiguration 開啟自動配置,主要作用就是呼叫 spring-core 包裡的 loadfactorynames(),將 autoconfig 包裡的已經寫好的自動配置載入進來。
@conditional 條件註解,通過判斷類路徑下有沒有相應配置的 jar 包來確定是否載入和自動配置這個類。
在@enableautoconfiguration中,匯入了乙個autoconfigurationimportselector.class。我推測一些自動配置就是在這個類中實現的。
進入這個類中,這個類是固定路勁下讀取配置。
總結,@enableautoconfiguration 作用
從classpath中搜尋所有meta-inf/spring.factories配置檔案然後,將其中org.springframework.boot.autoconfigure.enableautoconfiguration key對應的配置項載入到spring容器
只有spring.boot.enableautoconfiguration為true(預設為true)的時候,才啟用自動配置
@enableautoconfiguration還可以進行排除,排除方式有2中,一是根據class來排除(exclude),二是根據class name(excludename)來排除
其內部實現的關鍵點有
1)importselector 該介面的方法的返回值都會被納入到spring容器管理中
2)springfactoriesloader 該類可以從classpath中搜尋所有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...