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

nacos(SpringCloud)配置加載過程

 更新時間: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方法啟動,這里就不展開講了,我們主要看下面的代碼,創(chuàng)建Spring容器之前先準(zhǔn)備環(huán)境

org.springframework.boot.SpringApplication#prepareEnvironment

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

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

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

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

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

org.springframework.cloud.bootstrap.BootstrapApplicationListener#bootstrapServiceContext

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

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

BootstrapApplicationListener,不過會由于以下代碼返回

接下來我們看一下另一個重要的監(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)用時機(jī)就在org.springframework.boot.SpringApplication#prepareContext

這里我們也重點看兩個

AncestorInitializer

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

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

另一個是PropertySourceBootstrapConfiguration

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

在創(chuàng)建cloud 的容器時,會引入一個配置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,對應(yīng)的data-id都需要加上文件后綴,如.yaml

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

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

總結(jié)

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

相關(guān)文章

  • Java使用Ajax異步上傳文件

    Java使用Ajax異步上傳文件

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

    Spring WebFlux簡介使用場景及完整使用示例

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

    idea如何反編譯jar包

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

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

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

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

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

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

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

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

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

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

    這篇文章主要為大家介紹了java實現(xiàn)判斷域名無法訪問的時候自行訪問下一條域名示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(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)孔侄?,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-07-07

最新評論

颍上县| 崇明县| 宁远县| 新河县| 屯昌县| 安岳县| 崇信县| 两当县| 容城县| 库车县| 安多县| 息烽县| 咸宁市| 灌南县| 澳门| 太仓市| 武陟县| 通河县| 桦甸市| 彩票| 永登县| 盐津县| 孙吴县| 航空| 丰顺县| 阿拉善右旗| 白玉县| 朔州市| 合江县| 元氏县| 资溪县| 崇明县| 冷水江市| 灌云县| 新蔡县| 山阳县| 综艺| 兰西县| 天台县| 达州市| 延安市|