Nacos配置的多文件加載與共享配置方式
Nacos配置的多文件加載與共享配置
思考一個(gè)問(wèn)題,現(xiàn)實(shí)開(kāi)發(fā)中會(huì)遇到這樣一個(gè)場(chǎng)景,我們把應(yīng)用拆分成到多個(gè)配置文件中,那么Nacos怎么管理多個(gè)配置文件?
加載多個(gè)配置
我們已經(jīng)知道Spring應(yīng)用對(duì)Nacos中配置內(nèi)容的對(duì)應(yīng)關(guān)系是通過(guò)下面三個(gè)參數(shù)控制的:
spring.cloud.nacos.config.prefix
spring.cloud.nacos.config.file-extension
spring.cloud.nacos.config.group
默認(rèn)情況下,我們使用的方式:Data ID=${spring.application.name}.properties
Group=DEFAULT_GROUP
的配置。
例如:現(xiàn)在有這樣需求:我們想要對(duì)所有應(yīng)用的Actuator模塊以及日志輸出做統(tǒng)一的配置管理。
最簡(jiǎn)單的實(shí)現(xiàn)方式應(yīng)用相關(guān)配置Actuator.properties,日志log.properties 。我們通過(guò)拆分這兩類的配置,現(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)用中通過(guò)使用spring.cloud.nacos.config.ext-config參數(shù)來(lái)配置要加載的這兩個(gè)配置內(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 :
置是一個(gè)數(shù)組List類型。每個(gè)配置中包含三個(gè)參數(shù):data-id
、group
,refresh
refresh
: 參數(shù)控制這個(gè)配置文件中的內(nèi)容時(shí)候支持自動(dòng)刷新,默認(rèn)情況下,只有默認(rèn)加載的配置才會(huì)自動(dòng)刷新,對(duì)于這些擴(kuò)展的配置加載內(nèi)容需要配置該設(shè)置時(shí)候才會(huì)實(shí)現(xiàn)自動(dòng)刷新。
共享配置
通過(guò)上述的加載集合的方式實(shí)際上已經(jīng)可以做到共享配置文件了。Nacos中還提供了另外一個(gè)便捷的配置方式
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ù)用來(lái)配置多個(gè)共享配置的Data Id
,多個(gè)的時(shí)候用用逗號(hào)分隔spring.cloud.nacos.config.refreshable-dataids
: 參數(shù)用來(lái)定義哪些共享配置的Data Id
Data Id在配置變化時(shí),應(yīng)用中可以動(dòng)態(tài)刷新,多個(gè)``之間用逗號(hào)隔開(kāi)。如果沒(méi)有明確配置,默認(rèn)情況下所有共享配置都不支持動(dòng)態(tài)刷新
配置加載的優(yōu)先級(jí)
當(dāng)我們加載多個(gè)配置的時(shí)候,如果存在相同的key時(shí),我們需要深入了解配置加載的優(yōu)先級(jí)關(guān)系。
在使用Nacos配置的時(shí)候,主要有以下三類配置:
- 通過(guò)spring.cloud.nacos.config.shared-dataids定義的共享配置
- 通過(guò)spring.cloud.nacos.config.ext-config[n]定義的加載配置
- 通過(guò)內(nèi)部規(guī)則(spring.cloud.nacos.config.prefix、spring.cloud.nacos.config.file-extension、spring.cloud.nacos.config.group這幾個(gè)參數(shù))拼接出來(lái)的配置
要弄清楚這幾個(gè)配置加載的順序,我們把這幾個(gè)配置加到應(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
我們通過(guò)日志可以看到加載順序:A < B < C
參考資料:Nacos官方文檔
無(wú)法加載nacos配置中心的配置
在bootstrap.properties文件中對(duì)于nacos的地址配的有問(wèn)題,由于idea的提示沒(méi)仔細(xì)看應(yīng)該配nacos的config地址,而不是discovery地址,雖然只有一點(diǎn)差距,但是檢查起來(lái)真難
spring.cloud.nacos.config.server-addr=
寫(xiě)成了
spring.cloud.nacos.discovery.server-addr=
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
SpringBoot3解決跨域請(qǐng)求的方案小結(jié)
解決跨域請(qǐng)求,主要有JSONP,iframe,window.name,CORS等方式,其中CORS方式是最常用的跨域?qū)崿F(xiàn)方式,而且是對(duì)各種請(qǐng)求方法、各種數(shù)據(jù)請(qǐng)求類型都是完美支持的,本文介紹了SpringBoot3解決跨域請(qǐng)求的方案小結(jié),需要的朋友可以參考下2024-07-07springboot框架阿里開(kāi)源低代碼工具LowCodeEngine
這篇文章主要為大家介紹了springboot框架阿里開(kāi)源低代碼LowCodeEngine工具使用詳解有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-06-06springboot項(xiàng)目docker分層構(gòu)建的配置方式
在使用dockerfile構(gòu)建springboot項(xiàng)目時(shí),速度較慢,用時(shí)比較長(zhǎng),為了加快構(gòu)建docker鏡像的速度,采用分層構(gòu)建的方式,這篇文章主要介紹了springboot項(xiàng)目docker分層構(gòu)建,需要的朋友可以參考下2024-03-03Java實(shí)現(xiàn)讀取項(xiàng)目中文件(.json或.properties)的方法詳解
這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)讀取項(xiàng)目中文件的方法,例如.json或.properties,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下2023-04-04淺談web項(xiàng)目讀取classpath路徑下面的文件
這篇文章主要介紹了淺談web項(xiàng)目讀取classpath路徑下面的文件,具有一定借鑒價(jià)值,需要的朋友可以參考下2018-01-01