成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

不得不知的Spring Boot與Spring Cloud應(yīng)用啟動流程

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

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

[[332166]]

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

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

第一步:準(zhǔn)備環(huán)境Environment。此時會發(fā)送一個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對應(yīng)的application-[activeProfile].yaml配置文件。

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

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

Spring Boot啟動流程如下圖所示。

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

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

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

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

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

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

Spring Cloud的啟動流程如下圖所示。

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

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

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

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

 

責(zé)任編輯:武曉燕 來源: Java藝術(shù)
相關(guān)推薦

2011-03-31 10:46:54

LinuxCLI軟件

2017-08-16 18:03:12

Docker安全工具容器

2024-06-05 11:36:28

2020-06-04 13:52:00

CRM選型

2011-04-26 09:44:05

Power Cloud

2011-05-11 14:58:50

網(wǎng)站策劃運(yùn)營

2011-08-11 10:47:23

2015-08-17 11:46:07

云計算云服務(wù)公有云

2020-10-21 09:36:40

Vue項目技巧

2011-06-24 11:48:46

SEO

2019-12-24 14:04:59

PythonExcel數(shù)據(jù)處理

2020-06-15 08:19:00

ZooKeeperEureka

2010-08-27 10:40:55

Android

2018-06-28 22:24:45

物聯(lián)網(wǎng)技術(shù)網(wǎng)絡(luò)通信

2017-09-20 09:46:38

Spring BootSpring Clou內(nèi)存

2023-12-14 13:28:00

Spring流程Web

2015-08-31 14:12:12

DockerKubernetesPaaS

2018-05-09 11:15:59

服務(wù)器緩存技巧

2019-11-27 14:20:27

Redis數(shù)據(jù)庫C語言

2020-09-22 08:16:20

軟件開發(fā)原則
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 精品国产一区二区三区性色 | 瑟瑟激情| 日韩成人 | 操操网站| 日韩中文字幕在线观看 | 久久i | 国产精品国产三级国产aⅴ中文 | 成人区精品一区二区婷婷 | 国产精品揄拍一区二区 | 欧美午夜精品久久久久免费视 | 青青草免费在线视频 | 欧美乱做爰xxxⅹ久久久 | 七七婷婷婷婷精品国产 | 视频在线一区二区 | 最新中文字幕在线播放 | 性色在线| 少妇一级淫片免费播放 | 午夜精品久久久久久不卡欧美一级 | 久草视频在线播放 | 亚洲精品成人网 | 日韩在线不卡 | 色香婷婷 | 日韩欧美1区2区 | 成人在线视频网站 | 欧美日韩电影一区二区 | 久久婷婷麻豆国产91天堂 | 国产成人高清在线观看 | 狠狠插狠狠操 | 欧美三级免费观看 | 狠狠久久综合 | 久久久久久高潮国产精品视 | 久久久久国产一区二区 | 人人玩人人添人人澡欧美 | 亚洲精品三级 | 中文字幕国产第一页 | 秋霞a级毛片在线看 | 成人性生交大免费 | 欧美中文字幕一区二区三区亚洲 | 精品久久久久久亚洲精品 | 国产一级在线观看 | 精久久久 |