目錄
2run()
2.1獲取run方法的***eventpublishingrunlistener
2.2準備環境:prepareenvironment()
2.4獲取springbootexceptionreporter
2.5準備容器preparecontext()
2.6refresh
this.resourceloader = resourceloader;
assert.notnull(primarysources, "primarysources must not be null");
this.primarysources = new linkedhashset<>(arrays.aslist(primarysources));
//判斷web環境:none、servlet、reactive
//從spring.factories載入initializer
setinitializers((collection) getspringfactoriesinstances(
//從spring.factories載入***
//獲取主類 }
stopwatch stopwatch = new stopwatch();
stopwatch.start();
collectionexceptionreporters = new arraylist<>();
configureheadlessproperty();
/第一步:獲取run方法的***eventpublishingrunlistener,負責發布run方法中的事件
/發布starting事件
listeners.starting();
try
listeners.started(context);
} catch (throwable ex)
try
catch (throwable ex)
return context;
}void starting();
void environmentprepared(configurableenvironment environment);
}if (contextclass == null)
}catch (classnotfoundexception ex)
} }從spring.factories獲取,用來支援報告關於啟動的錯誤
該類主要是在專案啟動失敗之後,列印log
這一步主要是在refresh()之前的準備動作。包含乙個非常關鍵的操作:將啟動類注入容器,為後續開啟自動化配置奠定基礎。
//設定容器環境,包括各種變數
context.setenvironment(environment);
//執行容器後置處理
//傳送容器已經準備好的事件,通知各***
listeners.contextprepared(context);
//列印log
if (this.logstartupinfo)
// add boot specific singleton beans
//註冊啟動引數bean,這裡將容器指定的引數封裝成bean,注入容器
//設定banner
if (printedbanner != null)
// load the sources
//獲取我們的啟動類指定的引數,可以是多個
setsources = getallsources();
assert.notempty(sources, "sources must not be empty");
//載入我們的啟動類,將啟動類注入容器
load(context, sources.toarray(new object[0]));
//發布容器已載入事件。
listeners.contextloaded(context); }
舉例:context.addbeanfactorypostprocessor( new configurationwarningspostprocessor(getchecks()));
load(context, sources.toarray(new object[0])):
這裡會將我們的啟動類載入到spring容器beandefinitionmap中,為後續springboot 自動化配置奠定基礎,springboot為我們提供的各種註解配置也與此有關。參考:
springboot2 | springboot啟動流程原始碼分析
tomcat原始碼學習2 啟動過程
這一次將會對tomcat的啟動過程進行乙個分析。tomcat的入口函式是 org.apache.catalina.startup.main 在這個函式中最關鍵的 段是 public static void main string args if command.equals startd else ...
SpringMVC之原始碼分析 啟動過程
類的繼承關係 spring mvc前端控制器dispatcherservlet frameworkservlet httpservletbean httpservlet httpservlet是servlet規範中的核心類,實現servlet介面,繼承此類用於處理使用者請求。httpservletb...
u boot 原始碼分析 1 啟動過程分析
kbuild 啟動過程 第二階段 總結參考 對於uboot,我一直是雲裡霧裡的乙個狀態,這部分讓我感到自己很菜,不用縱向深入地掌握uboot整個細節,但是相對它有乙個整體流程上的把握,包括uboot的啟動啟動過程,在整個啟動過程中會涉及到哪些檔案,以此的呼叫過程是什麼?抱著這幾個問題,大量蒐集資料,...