springboot自動配置

2021-10-20 19:45:49 字數 2461 閱讀 1446

目錄

@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...