springcloud本地配置優(yōu)先方式
springcloud本地配置優(yōu)先
如果我們的項(xiàng)目使用了遠(yuǎn)程配置中心,就會(huì)使用遠(yuǎn)程配置優(yōu)先??稍趯?shí)際開(kāi)發(fā)中,通常我們需要本地的部分配置優(yōu)先于遠(yuǎn)程配置,方便開(kāi)發(fā)調(diào)試。
spring cloud為我們提供了相關(guān)的配置:
使用propertise配置
1.不適用遠(yuǎn)程配置
默認(rèn)值是true,不要調(diào)整成false, 可以不配置,使用默認(rèn)即可
# 如果想要遠(yuǎn)程配置優(yōu)先級(jí)高,那么 allow-override 設(shè)置為 false,如果想要本地配置優(yōu)先級(jí)高那么 allow-override 設(shè)置為 true spring.cloud.config.allow-override=true
2.本地文件優(yōu)先
# 如果本地配置優(yōu)先級(jí)高,那么 override-none 設(shè)置為 true,包括系統(tǒng)環(huán)境變量、本地配置文件等配置 spring.cloud.config.override-none=true
3.遠(yuǎn)程配置只覆蓋本地配置文件
# 只有系統(tǒng)環(huán)境變量或者系統(tǒng)屬性才能覆蓋遠(yuǎn)程配置文件的配置,本地配置文件中配置優(yōu)先級(jí)低于遠(yuǎn)程配置;注意本地配置文件不是系統(tǒng)屬性 spring.cloud.config.override-system-properties=false
2或3任意配置即可,只會(huì)生效一種。
使用yml配置同properties一樣:
spring: cloud: config: # 如果本地配置優(yōu)先級(jí)高,那么 override-none 設(shè)置為 true,包括系統(tǒng)環(huán)境變量、本地配置文件等配置 override-none: true # 如果想要遠(yuǎn)程配置優(yōu)先級(jí)高,那么 allow-override 設(shè)置為 false,如果想要本地配置優(yōu)先級(jí)高那么 allow-override 設(shè)置為 true allow-override: true # 只有系統(tǒng)環(huán)境變量或者系統(tǒng)屬性才能覆蓋遠(yuǎn)程配置文件的配置,本地配置文件中配置優(yōu)先級(jí)低于遠(yuǎn)程配置;注意本地配置文件不是系統(tǒng)屬性 override-system-properties: false
配置到這里,可能就會(huì)去嘗試。不過(guò)當(dāng)你配置完成后會(huì)發(fā)覺(jué),好像配置沒(méi)有生效。
不要著急,我們繼續(xù)分析。
上源碼:
org.springframework.cloud.bootstrap.config.PropertySourceBootstrapConfiguration#insertPropertySources
我們反向看一下:
- 通過(guò)remoteProperties對(duì)象的屬性判斷的
- remoteProperties的屬性是通過(guò)spring.cloud.config的鍵值對(duì)復(fù)制的
- 鍵值對(duì)是通過(guò)環(huán)境變量中incoming獲取的
- incoming是new出來(lái)的也就是說(shuō)沒(méi)有值
- incoming的值是通過(guò)reversedComposite的的值排序后添每次加頭部進(jìn)去的,也就是和reversedComposite原始的順序是一致的,propertySources中已有值,需要使用addFirst把遠(yuǎn)程配置加載到前列,就需要先倒序.
- 查看composite就知道了,最終的參數(shù)是從哪里獲取的。
從結(jié)果發(fā)現(xiàn),composite中的配置全部是來(lái)自與遠(yuǎn)程配置。
所以如果你需要本地配置優(yōu)先,需要把上面的配置放在遠(yuǎn)程配置中的配置文件中才可以生效
同時(shí)需要注意文件順序:
- {application.name}-{profiles}.后綴
- {application.name}.后綴
- {application.name}
- spring.cloud.nacos.config.shared-configs中的公共配置
快去試一下效果吧??!~~~~~~~~~~~~~~~~~~~~
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
IntelliJ IDEA中Project與Module的概念以及區(qū)別
這篇文章主要給大家介紹了關(guān)于IntelliJ IDEA中Project與Module的概念以及區(qū)別的相關(guān)資料,文中通過(guò)實(shí)例介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-01-01使用SpringBoot+AOP實(shí)現(xiàn)可插拔式日志的示例代碼
這篇文章主要介紹了使用SpringBoot+AOP實(shí)現(xiàn)可插拔式日志的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07關(guān)于spring?boot使用?jdbc+mysql?連接的問(wèn)題
這篇文章主要介紹了spring?boot使用?jdbc+mysql?連接,在這里mysql?8.x版本驅(qū)動(dòng)包,要使用?com.mysql.cj.jdbc.Driver作為驅(qū)動(dòng)類,文中給大家詳細(xì)介紹,需要的朋友可以參考下2022-03-03mybatis 如何通過(guò)resultMap 返回long
這篇文章主要介紹了mybatis 如何通過(guò)resultMap 返回long的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-07-07SpringTask實(shí)現(xiàn)定時(shí)任務(wù)方法講解
通過(guò)重寫(xiě)Schedu lingConfigurer方法實(shí)現(xiàn)對(duì)定時(shí)任務(wù)的操作,單次執(zhí)行、停止、啟動(dòng)三個(gè)主要的基本功能,動(dòng)態(tài)的從數(shù)據(jù)庫(kù)中獲取配置的定時(shí)任務(wù)cron信息,通過(guò)反射的方式靈活定位到具體的類與方法中2023-02-02