springboot 啟動流程

2021-08-23 12:18:51 字數 1664 閱讀 5362

this.resourceloader = resourceloader;

assert.notnull(primarysources, "primarysources must not be null");

this.primarysources = new linkedhashset<>(arrays.aslist(primarysources));

//獲取容器型別 reactive servlet none 三種型別 一般web服務為 servlet 型別

setinitializers((collection) getspringfactoriesinstances(

}stopwatch stopwatch = new stopwatch();

stopwatch.start();

collectionexceptionreporters = new arraylist<>();

configureheadlessproperty();

listeners.starting();

try

listeners.started(context);

}catch (throwable ex)

try catch (throwable ex)

return context;

}

向spring容器註冊bean的呼叫棧

=>refreshcontext(context)

=>invokebeanfactorypostprocessors(beanfactory)

=>postprocessorregistrationdelegate.invokebeanfactorypostprocessors(beanfactory, getbeanfactorypostprocessors())

3: postprocessorregistrationdelegate.invokebeanfactorypostprocessors(beanfactory, getbeanfactorypostprocessors())

=>invokebeandefinitionregistrypostprocessors(currentregistryprocessors, registry);=>postprocessor.postprocessbeandefinitionregistry(registry);

4: configurationclasspostprocessor.postprocessbeandefinitionregistry=>processconfigbeandefinitions(registry)

=>parser.parse(candidates);

//掃瞄路徑的下的檔案 spring的註解的掃瞄 在此處完成並註冊到beanfactroy中

5: configurationclassparser.parse(setconfigcandidates)

=>parse(((annotatedbeandefinition) bd).getmetadata(), holder.getbeanname());=>processconfigurationclass(configurationclass configclass)

=>doprocessconfigurationclass(configclass, sourceclass)//

springboot啟動流程

本文以除錯乙個實際的springboot啟動程式為例,參考流程中主要類類圖,來分析其啟動邏輯和自動化配置原理。2.載入springboot配置環境 configurableenvironment 如果是通過web容器發布,會載入standardenvironment,其最終也是繼承了configur...

Spring Boot啟動流程

隨著我們ctrl加滑鼠左鍵的使用,最終我們會在乙個springboot專案中發現啟動過程由以下兩個過程組成 構造過程 public resourceloader resourceloader,class primarysources run方法 string.args context 這個也很重要,...

springboot啟動流程

1 判斷當前類是web的serverlet 2 載入所有的初始化器 3 載入所有的 4 設定程式執行的主類 2 執行run方法 1 建立計時器物件開始計時 2 設定handless的屬性並設定到系統屬性中 3 初始化 getrunlister 4 啟動準備好的 5 設定命令列引數 6 準備環境物件 ...