日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
不得不知的SpringBoot與SpringCloud應(yīng)用啟動(dòng)流程

 在繼續(xù)分析Spring Cloud實(shí)現(xiàn)動(dòng)態(tài)配置的源碼之前,我們需要補(bǔ)充一些Spring Boot和Spring Cloud的基礎(chǔ)知識(shí)才能繼續(xù)往下看。本篇我們一起學(xué)習(xí)Spring Boot與Spring Cloud應(yīng)用的啟動(dòng)流程。

創(chuàng)新互聯(lián)建站主要從事成都網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè)、網(wǎng)頁(yè)設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)凌源,10余年網(wǎng)站建設(shè)經(jīng)驗(yàn),價(jià)格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):18982081108

SpringBoot應(yīng)用啟動(dòng)流程

當(dāng)我們?cè)赟pring Boot項(xiàng)目中調(diào)用SpringApplication的run方法啟動(dòng)應(yīng)用時(shí),Spring Boot應(yīng)用啟動(dòng)流程粗粒度可劃分為三個(gè)步驟。

第一步:準(zhǔn)備環(huán)境Environment。此時(shí)會(huì)發(fā)送一個(gè)ApplicationEnvironmentPreparedEvent事件(應(yīng)用環(huán)境準(zhǔn)備事件),事件是同步消費(fèi)的。當(dāng)事件監(jiān)聽器都被調(diào)用完后,Spring Boot繼續(xù)完成環(huán)境Environment的準(zhǔn)備工作,加載application.yaml以及所有的ActiveProfiles對(duì)應(yīng)的application-[activeProfile].yaml配置文件。

第二步:準(zhǔn)備ApplicationContext容器。我們?cè)趕pring.factories文件中配置的EnableAutoConfiguration就是在此時(shí)被讀取的,并且根據(jù)配置的類名加載類,為類生成BeanDefinition注冊(cè)到bean工廠中。

第三步:一切準(zhǔn)備就緒后再刷新ApplicationContext。

Spring Boot啟動(dòng)流程如下圖所示。

Spring Cloud應(yīng)用啟動(dòng)流程

Spring Cloud項(xiàng)目可以在spring.factories配置文件中配置一種BootstrapConfiguration類,這與Spring Boot提供的EnableAutoConfiguration類并沒有什么區(qū)別,只是它們作用在不同的ApplicationContext容器中。

當(dāng)項(xiàng)目中添加Spring Cloud的依賴時(shí),SpringApplication的run方法啟動(dòng)的就會(huì)是兩個(gè)容器,即兩個(gè)ApplicationContext。原本的應(yīng)用啟動(dòng)流程也有所變化。

Spring Cloud的BootstrapApplicationListener監(jiān)聽ApplicationEnvironmentPreparedEvent事件,在監(jiān)聽到事件時(shí)開啟一個(gè)新的ApplicationContext容器,我們可以稱這個(gè)ApplicationContext容器為Spring Cloud的Bootstrap容器。

Bootstrap容器被用來注冊(cè)spring.factories配置文件中配置的所有BootstrapConfiguration,并在Bootstrap容器初始化完成后將其Bean工廠作為原本Spring Boot啟動(dòng)的ApplicationContext容器的Bean工廠的父工廠,如下圖所示。

這個(gè)Spring Cloud層的Bootstrap容器似乎是Spring Cloud特定為實(shí)現(xiàn)動(dòng)態(tài)配置量身定做的。

Spring Cloud的啟動(dòng)流程如下圖所示。

Spring Cloud創(chuàng)建為應(yīng)用啟動(dòng)一個(gè)Bootstrap容器也會(huì)走一遍Spring Boot應(yīng)用的啟動(dòng)流程。而原來main方法中調(diào)用SpringApplication的run方法啟動(dòng)ApplicationContext容器則會(huì)卡在環(huán)境準(zhǔn)備階段,等待Spring Cloud為其提供父工廠。

bootstrap.[yaml|props]配置文件在BootstrapApplicationListener監(jiān)聽到ApplicationEnvironmentPreparedEvent事件時(shí),準(zhǔn)備啟動(dòng)Bootstrap容器之前讀取,并寫入到Bootstrap容器的Environment。

BootstrapApplicationListener通過判斷Environment中是否存在bootstrap這個(gè)PropertySource辨別當(dāng)前容器是否是Bootstrap容器,以解決無限監(jiān)聽到ApplicationEnvironmentPreparedEvent事件啟動(dòng)新容器的問題。

本文轉(zhuǎn)載自微信公眾號(hào)「 Java藝術(shù)」,可以通過以下二維碼關(guān)注。轉(zhuǎn)載本文請(qǐng)聯(lián)系Java藝術(shù)公眾號(hào)。


文章標(biāo)題:不得不知的SpringBoot與SpringCloud應(yīng)用啟動(dòng)流程
瀏覽地址:http://www.dlmjj.cn/article/dpojpcc.html