前情回顧:html
對於Nacos做爲配置中心的使用,經過以前的幾篇博文,咱們已經介紹瞭如何在Nacos中建立配置內容、Nacos配置內容與Spring應用配置之間的對應關係以及實戰中多環境下的配置管理方案。git
可是,咱們實際應用過程當中還會常常碰到這樣的問題:有時候咱們會對應用的配置根據具體做用作一些拆分,存儲在不一樣的配置文件中,除了歸類不一樣的配置以外,也能夠便於共享配置給不一樣的應用。對於這樣的需求,Nacos也能夠很好的支持,下面就來具體介紹一下,當使用Nacos時,咱們如何加載多個配置,以及如何共享配置。github
經過以前的學習,咱們已經知道Spring應用對Nacos中配置內容的對應關係是經過下面三個參數控制的:spring
默認狀況下,會加載Data ID=${spring.application.name}.properties
,Group=DEFAULT_GROUP
的配置。數組
假設如今有這樣的一個需求:咱們想要對全部應用的Actuator模塊以及日誌輸出作統一的配置管理。因此,咱們但願能夠將Actuator模塊的配置放在獨立的配置文件actuator.properties
文件中,而對於日誌輸出的配置放在獨立的配置文件log.properties
文件中。經過拆分這兩類配置內容,但願能夠作到配置的共享加載與統一管理。app
這時候,咱們只須要作如下兩步,就能夠實現這個需求:學習
第一步:在Nacos中建立Data ID=actuator.properties
,Group=DEFAULT_GROUP
和Data ID=log.properties
,Group=DEFAULT_GROUP
的配置內容。ui
第二步:在Spring Cloud應用中經過使用spring.cloud.nacos.config.ext-config
參數來配置要加載的這兩個配置內容,好比:spa
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
配置是一個數組List類型。每一個配置中包含三個參數:data-id
、group
,refresh
;前兩個不作贅述,與Nacos中建立的配置相互對應,refresh
參數控制這個配置文件中的內容時候支持自動刷新,默認狀況下,只有默認加載的配置纔會自動刷新,對於這些擴展的配置加載內容須要配置該設置時候纔會實現自動刷新。日誌
經過上面加載多個配置的實現,實際上咱們已經能夠實現不一樣應用共享配置了。可是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
參數用來配置多個共享配置的Data Id
,多個的時候用用逗號分隔spring.cloud.nacos.config.refreshable-dataids
參數用來定義哪些共享配置的Data Id
在配置變化時,應用中能夠動態刷新,多個Data Id
之間用逗號隔開。若是沒有明確配置,默認狀況下全部共享配置都不支持動態刷新當咱們加載多個配置的時候,若是存在相同的key時,咱們須要深刻了解配置加載的優先級關係。
在使用Nacos配置的時候,主要有如下三類配置:
spring.cloud.nacos.config.shared-dataids
定義的共享配置spring.cloud.nacos.config.ext-config[n]
定義的加載配置spring.cloud.nacos.config.prefix
、spring.cloud.nacos.config.file-extension
、spring.cloud.nacos.config.group
這幾個參數)拼接出來的配置要弄清楚這幾個配置加載的順序,咱們從日誌中也能夠很清晰的看到,咱們能夠作一個簡單的實驗:
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
根據上面的配置,應用分別會去加載三類不一樣的配置文件,啓動應用的時候,將會在日誌中看到以下輸出:
2019-02-08 21:23:02.665 INFO 63804 --- [main] o.s.c.a.n.c.NacosPropertySourceBuilder : Loading nacos data, dataId: 'log.properties', group: 'DEFAULT_GROUP' 2019-02-08 21:23:02.671 INFO 63804 --- [main] o.s.c.a.n.c.NacosPropertySourceBuilder : Loading nacos data, dataId: 'actuator.properties', group: 'DEFAULT_GROUP' 2019-02-08 21:23:02.677 INFO 63804 --- [main] o.s.c.a.n.c.NacosPropertySourceBuilder : Loading nacos data, dataId: 'alibaba-nacos-config-client.properties', group: 'DEFAULT_GROUP'
後面加載的配置會覆蓋以前加載的配置,因此優先級關係是:A < B < C
本文示例讀者能夠經過查看下面倉庫的中的alibaba-nacos-config-client
項目:
若是您對這些感興趣,歡迎star、follow、收藏、轉發給予支持!