開(kāi)始
可執(zhí)行組件
八種類(lèi)型
PropertySourceLoader,屬性源加載器,用于載入屬性源。
SpringApplicationRunListener,Spring應(yīng)用運(yùn)行監(jiān)聽(tīng)器,用于監(jiān)聽(tīng)Spring應(yīng)用運(yùn)行過(guò)程中的各種事件。
SpringBootExceptionReporter,SpringBoot異常報(bào)告器。
ApplicationListener,應(yīng)用監(jiān)聽(tīng)器,監(jiān)聽(tīng)?wèi)?yīng)用發(fā)生的各種事件。
EnvironmentPostProcessor,環(huán)境后置處理器。
FAIlureAnalyzer,故障分析器。
FailureAnalysisReporter,故障分析報(bào)告器。
PropertiesPropertySourceLoader
YamlPropertySourceLoader
EventPublishingRunListener
EventPublishingRunListener,事件發(fā)布運(yùn)行監(jiān)聽(tīng)器。這是SpringBoot的spring.factories中配置的唯一一個(gè)Spring應(yīng)用運(yùn)行監(jiān)聽(tīng)器。查看該監(jiān)聽(tīng)器的源代碼,發(fā)現(xiàn)它的作用就是通過(guò)一個(gè)多路廣播器,將SpringBoot運(yùn)行狀態(tài)的變化,構(gòu)建成事件,并廣播給各個(gè)監(jiān)聽(tīng)器。
ClearCachesApplicationListener
ParentContextCloserApplicationListener
FileEncodingApplicationListener
AnsiOutputApplicationListener
AnsiOutputApplicationListener,Ansi輸出應(yīng)用監(jiān)聽(tīng)器。該監(jiān)聽(tīng)器的作用是,當(dāng)收到應(yīng)用環(huán)境準(zhǔn)備就緒事件時(shí),對(duì)Ansi輸出的相關(guān)狀態(tài)進(jìn)行設(shè)置,并綁定到應(yīng)用環(huán)境中。
ConfigFileApplicationListener
DelegatingApplicationListener
DelegatingApplicationListener,委托應(yīng)用監(jiān)聽(tīng)器。這個(gè)監(jiān)聽(tīng)器比較有意思,它本身沒(méi)有實(shí)質(zhì)性的處理某事件。而是在應(yīng)用環(huán)境準(zhǔn)備就緒事件發(fā)生時(shí),通過(guò)環(huán)境中的配置的context.listener.classes,去搜集相應(yīng)的監(jiān)聽(tīng)器。如果收集到,就會(huì)創(chuàng)建一個(gè)簡(jiǎn)單事件廣播器實(shí)例,放到類(lèi)屬性上,同時(shí),還會(huì)把收集到的監(jiān)聽(tīng)器,綁定到該廣播器上。
該監(jiān)聽(tīng)器的另一個(gè)特性時(shí),無(wú)論發(fā)生何事件,只要廣播器實(shí)例不為空,就利用該廣播器廣播該事件。
換一種方式配置監(jiān)聽(tīng)器
在application.yml中添加如下配置:
重啟項(xiàng)目,發(fā)現(xiàn)監(jiān)聽(tīng)器開(kāi)始發(fā)揮作用,控制臺(tái)顯示如下:
相關(guān)
SpringBoot的優(yōu)點(diǎn),有哪些值得我們使用的地方
自定義SpringApplication初始化器和監(jiān)聽(tīng)器
SpringBoot中,如何自定義Spring應(yīng)用運(yùn)行時(shí)監(jiān)聽(tīng)器
自定義SpringBoot的Banner和Bean名稱(chēng)是怎么來(lái)的?
SpringBoot如何使用命令行參數(shù)改變運(yùn)行時(shí)端口號(hào)