目錄
@springbootconfiguration
@enableautoconfiguration
修改預設配置 總結
@springbootconfiguration
@enableautoconfiguration
@componentscan(
excludefilters =
), @filter(
type = filtertype.custom,
classes = )})
}
@autoconfigurationpackage
@import()
public @inte***ce enableautoconfiguration
@autoconfigurationpackage
@import()
public @inte***ce autoconfigurationpackage
registrar.class
annotationmetadata metadata 註解源資訊,也就是 @springbootconfiguration註解標註的類所在的包
registrar就是把某個包下所有的元件給批量註冊進來
static class registrar implements importbeandefinitionregistrar, determinableimports
public void registerbeandefinitions(annotationmetadata metadata, beandefinitionregistry registry)
public setdetermineimports(annotationmetadata metadata)
}
autoconfigurationimportselector.class
給容器批量匯入元件看selectimports()方法——>getautoconfigurationentry()方法
最終得到listconfigurations = this.getcandidateconfigurations(annotationmetadata, attributes);的127個元件
利用listconfigurations = springfactoriesloader.loadfactorynames(this.getspringfactoriesloade***ctoryclass(), this.getbeanclassloader());工廠,最終得到的是map> loadspringfactories(classloader classloader)
獲取的資源檔案位置enumeration urls = classloader.getresources("meta-inf/spring.factories");掃瞄系統中所有meta-inf/spring.factories位置的檔案,最終spring-boot-autoconfigure-2.4.3的檔案裡有關org.springframework.boot.autoconfigure.enableautoconfiguration的有127個
springboot載入的核心:127個場景所有的自動配置啟動時預設是全部載入的,但是由於有@conditional按條件載入的註解存在,會按需開啟自動配置項
public string selectimports(annotationmetadata annotationmetadata) else
}
@bean
@conditionalonbean(multipartresolver.class) //容器中有這個型別元件
@conditionalo****singbean(name = dispatcherservlet.multipart_resolver_bean_name) //容器中沒有這個名字 multipartresolver 的元件
***xxautoconfiguration ---> 元件 --->
***xproperties如下:如果要改serverproperties就是改prefix = "server.servlet.encoding"裡面的配置
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...