Nacos配置的多文件加載與共享配置方式
Nacos配置的多文件加載與共享配置
思考一個問題,現(xiàn)實(shí)開發(fā)中會遇到這樣一個場景,我們把應(yīng)用拆分成到多個配置文件中,那么Nacos怎么管理多個配置文件?
加載多個配置
我們已經(jīng)知道Spring應(yīng)用對Nacos中配置內(nèi)容的對應(yīng)關(guān)系是通過下面三個參數(shù)控制的:
spring.cloud.nacos.config.prefixspring.cloud.nacos.config.file-extensionspring.cloud.nacos.config.group
默認(rèn)情況下,我們使用的方式:Data ID=${spring.application.name}.properties Group=DEFAULT_GROUP的配置。
例如:現(xiàn)在有這樣需求:我們想要對所有應(yīng)用的Actuator模塊以及日志輸出做統(tǒng)一的配置管理。
最簡單的實(shí)現(xiàn)方式應(yīng)用相關(guān)配置Actuator.properties,日志log.properties 。我們通過拆分這兩類的配置,現(xiàn)在需要將其共享
第一步:
在Nacos中創(chuàng)建Data ID=actuator.properties,Group=DEFAULT_GROUP和Data ID=log.properties,Group=DEFAULT_GROUP的配置內(nèi)容。

第二步:
在Spring Cloud應(yīng)用中通過使用spring.cloud.nacos.config.ext-config參數(shù)來配置要加載的這兩個配置內(nèi)容,比如:
spring.cloud.nacos.config.ext-config[0].data-id=actuator.properties spring.cloud.nacos.config.ext-config[0].group=DEFAULT_GROUP spring.cloud.nacos.config.ext-config[0].refresh=true spring.cloud.nacos.config.ext-config[1].data-id=log.properties spring.cloud.nacos.config.ext-config[1].group=DEFAULT_GROUP spring.cloud.nacos.config.ext-config[1].refresh=true
可以看到:
spring.cloud.nacos.config.ext-config :置是一個數(shù)組List類型。每個配置中包含三個參數(shù):data-id、group,refreshrefresh: 參數(shù)控制這個配置文件中的內(nèi)容時候支持自動刷新,默認(rèn)情況下,只有默認(rèn)加載的配置才會自動刷新,對于這些擴(kuò)展的配置加載內(nèi)容需要配置該設(shè)置時候才會實(shí)現(xiàn)自動刷新。
共享配置
通過上述的加載集合的方式實(shí)際上已經(jīng)可以做到共享配置文件了。Nacos中還提供了另外一個便捷的配置方式
spring.cloud.nacos.config.shared-dataids=actuator.properties,log.properties spring.cloud.nacos.config.refreshable-dataids=actuator.properties,log.properties
spring.cloud.nacos.config.shared-dataids:參數(shù)用來配置多個共享配置的Data Id,多個的時候用用逗號分隔spring.cloud.nacos.config.refreshable-dataids: 參數(shù)用來定義哪些共享配置的Data IdData Id在配置變化時,應(yīng)用中可以動態(tài)刷新,多個``之間用逗號隔開。如果沒有明確配置,默認(rèn)情況下所有共享配置都不支持動態(tài)刷新
配置加載的優(yōu)先級
當(dāng)我們加載多個配置的時候,如果存在相同的key時,我們需要深入了解配置加載的優(yōu)先級關(guān)系。
在使用Nacos配置的時候,主要有以下三類配置:
- 通過spring.cloud.nacos.config.shared-dataids定義的共享配置
- 通過spring.cloud.nacos.config.ext-config[n]定義的加載配置
- 通過內(nèi)部規(guī)則(spring.cloud.nacos.config.prefix、spring.cloud.nacos.config.file-extension、spring.cloud.nacos.config.group這幾個參數(shù))拼接出來的配置
要弄清楚這幾個配置加載的順序,我們把這幾個配置加到應(yīng)用上,觀察日志
spring.cloud.nacos.config.ext-config[0].data-id=actuator.properties spring.cloud.nacos.config.ext-config[0].group=DEFAULT_GROUP spring.cloud.nacos.config.ext-config[0].refresh=true spring.cloud.nacos.config.shared-dataids=log.properties spring.cloud.nacos.config.refreshable-dataids=log.properties

我們通過日志可以看到加載順序:A < B < C
參考資料:Nacos官方文檔
無法加載nacos配置中心的配置
在bootstrap.properties文件中對于nacos的地址配的有問題,由于idea的提示沒仔細(xì)看應(yīng)該配nacos的config地址,而不是discovery地址,雖然只有一點(diǎn)差距,但是檢查起來真難
spring.cloud.nacos.config.server-addr=
寫成了
spring.cloud.nacos.discovery.server-addr=
以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Java Mybatis框架增刪查改與核心配置詳解流程與用法
MyBatis 是一款優(yōu)秀的持久層框架,它支持自定義 SQL、存儲過程以及高級映射。MyBatis 免除了幾乎所有的 JDBC 代碼以及設(shè)置參數(shù)和獲取結(jié)果集的工作。MyBatis 可以通過簡單的 XML 或注解來配置和映射原始類型、接口和 Java POJO為數(shù)據(jù)庫中的記錄2021-10-10
SpringBoot3.x中自定義開發(fā)通用SDK的實(shí)現(xiàn)
本文介紹了SpringBoot和Maven創(chuàng)建自定義的SDK,包括創(chuàng)建項(xiàng)目、修改配置、編寫配置類、設(shè)置配置文件、構(gòu)建Jar包等,具有一定的參考價值,感興趣的可以了解一下2024-12-12
MyBatis-Plus聯(lián)表查詢以及分頁代碼實(shí)例
在開發(fā)中遇到了一個問題,需要進(jìn)行聯(lián)表查詢并進(jìn)行分頁,因?yàn)椴幌胱约簛韺懛猪?所以還是依靠MybatisPlus來實(shí)現(xiàn)想要的功能,下面這篇文章主要給大家介紹了關(guān)于MyBatis-Plus聯(lián)表查詢以及分頁的相關(guān)資料,需要的朋友可以參考下2023-06-06
配置java環(huán)境變量(linux mac windows7)
本文給大家詳細(xì)總結(jié)介紹了Linux、MAC以及Windows下配置java環(huán)境變量的方法,非常的細(xì)致全面,有需要的小伙伴可以參考下2015-11-11
springboot源碼中this::selfInitialize怪異用法的含義解析
這篇文章主要介紹了springboot源碼中this::selfInitialize怪異用法的含義解析,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-03-03
Spring Boot實(shí)現(xiàn)圖片上傳功能
這篇文章主要為大家詳細(xì)介紹了Spring Boot實(shí)現(xiàn)圖片上傳功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-05-05

