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