最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

nacos(SpringCloud)配置加載過程

 更新時(shí)間:2024年12月10日 11:42:59   作者:ke_ek121  
Nacos是Spring Cloud的配置中心,通過BootstrapApplicationListener和ConfigFileApplicationListener監(jiān)聽器加載配置文件,并通過PropertySourceBootstrapConfiguration將Nacos配置加載到Spring Boot應(yīng)用的environment中

nacos(SpringCloud)配置加載

要說nacos配置加載,首先說一下bootstrap配置文件加載。

眾所周知,Springboot由run方法啟動(dòng),這里就不展開講了,我們主要看下面的代碼,創(chuàng)建Spring容器之前先準(zhǔn)備環(huán)境

org.springframework.boot.SpringApplication#prepareEnvironment

首先會(huì)創(chuàng)建或獲取一個(gè)environment,然后加載一些系統(tǒng)配置(環(huán)境變量等)

接下來關(guān)鍵了,發(fā)布ApplicationEnvironmentPreparedEvent事件

監(jiān)聽器有很多,與此次有關(guān)的是

  • BootstrapApplicationListener (創(chuàng)建Spring容器和配置中心交互)
  • ConfigFileApplicationListener(讀取配置文件加載到environment)

首先是BootstrapApplicationListener,如下,可知默認(rèn)配置名字bootstrap,接著會(huì)進(jìn)入bootstrapServiceContext方法創(chuàng)建Spring容器

org.springframework.cloud.bootstrap.BootstrapApplicationListener#bootstrapServiceContext

這里會(huì)重走run方法進(jìn)行容器的創(chuàng)建,兩個(gè)容器是不同的

springboot容器為AnnotationConfigServletWebServerApplicationContext,cloud為AnnotationConfigApplicationContext,由上面的內(nèi)容可知這里又會(huì)重走監(jiān)聽器,

BootstrapApplicationListener,不過會(huì)由于以下代碼返回

接下來我們看一下另一個(gè)重要的監(jiān)聽器ConfigFileApplicationListener

由上可知,這里主要調(diào)用EnvironmentPostProcessorpostProcessEnvironment進(jìn)行處理;我們主要看的還是

org.springframework.boot.context.config.ConfigFileApplicationListener#postProcessEnvironment

這里沒有展開,有興趣可以看源碼,我們主要看加載前后cloud 的environment的變化

加載前

加載后

可以看出主要就是多了bootstrap.yml配置。

接下來我們看boot的environment的變化

加載前

加載后

可以看出多了application.properties的配置

那么問題來了,cloud的配置(bootstrap.yml)是如何加載到boot中的呢

listener看完了,接下來就到Initializer

而Initializer的調(diào)用時(shí)機(jī)就在org.springframework.boot.SpringApplication#prepareContext

這里我們也重點(diǎn)看兩個(gè)

AncestorInitializer

創(chuàng)建時(shí)機(jī),cloud的容器創(chuàng)建完成

initialize方法,添加了bootstrap.yml方法到boot 的environment中

另一個(gè)是PropertySourceBootstrapConfiguration

我們先來看一下它是如何引入的

在創(chuàng)建cloud 的容器時(shí),會(huì)引入一個(gè)配置BootstrapImportSelectorConfiguration

又引入了BootstrapImportSelector

這里利用SPI加載了PropertySourceBootstrapConfiguration

接下來我們看看initialize方法

這里就是使用PropertySourceLocator.locate()方法加載配置,然后添加到environment。

比如NacosPropertySourceLocator

至此nacos(SpringCloud)配置加載完畢。

后續(xù)補(bǔ)充:naocs共享配置和擴(kuò)展配置

spring:
  profiles:
    active: dev
  application:
    name: alibaba-demo
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848
      config:
        server-addr: 127.0.0.1:8848
        file-extension: yaml
        #共享配置
        shared-configs:
          - data-id: shard-test.yaml
            group: SHARD_GROUP
            refresh: true
        #擴(kuò)展配置
        extension-configs:
          - data-id: ext-test.yaml
            group: EXT_GROUP
            refresh: true

不管是shared-configs還是extension-configs,對(duì)應(yīng)的data-id都需要加上文件后綴,如.yaml

數(shù)組下標(biāo)越大的配置項(xiàng)優(yōu)先級(jí)越高

不同配置優(yōu)先級(jí) 默認(rèn)配置 > 擴(kuò)展配置 > 共享配置

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java使用Ajax異步上傳文件

    Java使用Ajax異步上傳文件

    使用Ajax上傳文件的應(yīng)用場(chǎng)景頗多,比如上傳用戶頭像、博客文章中插入圖片、對(duì)認(rèn)證用戶相關(guān)身份進(jìn)行校驗(yàn)等等很多很多。本文提供一個(gè)簡(jiǎn)單的示例供大家參考
    2021-05-05
  • Spring WebFlux簡(jiǎn)介使用場(chǎng)景及完整使用示例

    Spring WebFlux簡(jiǎn)介使用場(chǎng)景及完整使用示例

    Spring WebFlux 是一個(gè)強(qiáng)大的框架,為構(gòu)建高性能、可擴(kuò)展、資源高效的異步和非阻塞 Web 應(yīng)用程序和微服務(wù)提供了現(xiàn)代解決方案,它特別適合處理高并發(fā)、低延遲和流式數(shù)據(jù)場(chǎng)景,本文介紹Spring WebFlux 功能介紹,使用場(chǎng)景,完整使用示例,感興趣的朋友一起看看吧
    2025-07-07
  • idea如何反編譯jar包

    idea如何反編譯jar包

    文章介紹了如何使用IntelliJ IDEA反編譯JAR包,并詳細(xì)步驟包括安裝JavaBytecodeDecompiler插件、使用命令行反編譯、解決Java版本不兼容問題以及推薦其他反編譯工具
    2025-02-02
  • 解決maven沒有打包xml文件的問題

    解決maven沒有打包xml文件的問題

    這篇文章主要介紹了解決maven沒有打包xml文件的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • mybatis主從表關(guān)聯(lián)查詢,返回對(duì)象帶有集合屬性解析

    mybatis主從表關(guān)聯(lián)查詢,返回對(duì)象帶有集合屬性解析

    這篇文章主要介紹了mybatis主從表關(guān)聯(lián)查詢,返回對(duì)象帶有集合屬性解析,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • SpringBoot整合MybatisPlusGernerator實(shí)現(xiàn)逆向工程

    SpringBoot整合MybatisPlusGernerator實(shí)現(xiàn)逆向工程

    在我們寫項(xiàng)目的時(shí)候,我們時(shí)常會(huì)因?yàn)樾枰獎(jiǎng)?chuàng)建很多的項(xiàng)目結(jié)構(gòu)而頭疼,本文主要介紹了SpringBoot整合MybatisPlusGernerator實(shí)現(xiàn)逆向工程,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-05-05
  • Java JDBC自定義封裝工具類的步驟和完整代碼

    Java JDBC自定義封裝工具類的步驟和完整代碼

    這篇文章主要給大家介紹了關(guān)于Java JDBC自定義封裝工具類的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-02-02
  • java判斷域名無法訪問自行訪問下一條

    java判斷域名無法訪問自行訪問下一條

    這篇文章主要為大家介紹了java實(shí)現(xiàn)判斷域名無法訪問的時(shí)候自行訪問下一條域名示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-12-12
  • eclipse+myeclipse 環(huán)境配置方法

    eclipse+myeclipse 環(huán)境配置方法

    eclipse+myeclipse配置環(huán)境
    2009-07-07
  • Mybatis-plus如何查詢表中指定字段(不查詢?nèi)孔侄?

    Mybatis-plus如何查詢表中指定字段(不查詢?nèi)孔侄?

    這篇文章主要介紹了Mybatis-plus如何查詢表中指定字段(不查詢?nèi)孔侄?,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-07-07

最新評(píng)論

祁门县| 监利县| 洪雅县| 普定县| 宁乡县| 广灵县| 县级市| 大兴区| 彰武县| 普定县| 桐梓县| 金塔县| 呼伦贝尔市| 大悟县| 巫山县| 丽江市| 平阴县| 和林格尔县| 嵊州市| 汾阳市| 米脂县| 壶关县| 宽甸| 寿光市| 嘉义县| 淮安市| 科技| 凤凰县| 师宗县| 台山市| 大田县| 永善县| 青州市| 平乡县| 寻甸| 河间市| 沙坪坝区| 安顺市| 泾源县| 盖州市| 中方县|