一、nacos配置文件加載順序
nacos中配置文件的加載順序是優(yōu)先加載group為“${spring.application.name}”的配置文件,其次加載“DEFAULT_GROUP”組的配置文件。同一group的同名配置項,優(yōu)先級高的會覆蓋優(yōu)先級低的配置項。
舉個例子,假設(shè)應(yīng)用名為"demo",那么nacos會先加載group為“demo”的配置文件,如果找不到任何配置項,就會加載“DEFAULT_GROUP”組的配置文件。
二、nacos配置文件存在哪里
nacos配置文件可以存在于nacos的存儲中心(nacos server),也可以存儲在本地磁盤中??梢酝ㄟ^nacos的客戶端來獲取nacos存儲中心中的配置文件,也可以使用spring cloud config實現(xiàn)從本地磁盤中獲取配置文件。
通過nacos客戶端獲取nacos存儲中心中的配置文件的代碼示例:
@Autowired private ConfigService configService; public String getConfig(String dataId, String group, long timeout) throws NacosException { return configService.getConfig(dataId, group, timeout); }
三、nacos配置文件命名規(guī)則
nacos的配置文件名字主要由dataId和group兩部分組成,一個group下可以有多個dataId,同一個dataId下也可以有多個配置項,但是配置項必須用key-value方式進行配置。一個示例配置文件的dataId和group規(guī)則為:demo-service.properties:
dataId: demo-service.properties group: DEFAULT_GROUP
四、nacos配置文件名稱
nacos支持多種配置文件類型,如properties,yaml,json,txt等,具體的文件后綴名由應(yīng)用自行指定,并在nacos配置文件中聲明即可。nacos也支持按照環(huán)境進行配置文件命名,如demo-dev.properties、demo-test.properties等,具體命名規(guī)則要與應(yīng)用開發(fā)人員協(xié)商。
五、nacos配置文件加密
為了安全起見,我們可以對配置文件中的敏感信息進行加密。nacos的配置項支持加密,我們可以在配置文件中聲明需要加密的key,然后將敏感信息加密并替換原本在配置文件中的明文信息。nacos提供了內(nèi)置的加密/解密插件,默認采用AES方式進行加密。
聲明配置文件需要加密的示例:
## 開啟加密配置項 encrypt.enable=true ## 需要加密的字段 name=ENC(k0K3EgbeT7IBBAm8J+kn0g==)
六、nacos配置文件優(yōu)先級
同一group下,配置項按照優(yōu)先級高低來進行覆蓋。優(yōu)先級的定義是在配置項的value值后添加三個點和一個數(shù)字,數(shù)字越大,優(yōu)先級越高。示例:
name=value... name=value..... name=value......
七、nacos配置文件不生效
在使用nacos配置文件的過程中,我們可能遇到配置文件修改了但是生效不了的問題。一般情況下,可以檢查以下幾個方面:
1、檢查配置文件是否已經(jīng)成功發(fā)布到nacos服務(wù)器上。
2、檢查應(yīng)用的nacos配置文件客戶端是否正常運行,注意端口和ip的配置是否正確。
3、檢查nacos存儲配置文件時的編碼格式是否與應(yīng)用中的編碼格式一致。
4、檢查配置文件中的占位符是否正確,如果存在錯誤的占位符,可能會導致配置文件不生效。
5、檢查應(yīng)用中是否與nacos客戶端沖突的配置項。
八、nacos配置文件注入對象
在使用nacos配置文件的過程中,我們還可以通過“@NacosValue”注解來注入對象,方便我們使用配置文件中的配置項。示例:
## 配置項demo.name demo.name=hello ## 通過@NacosValue注解來注入對象 @Component public class DemoComponent { @NacosValue(value = "${demo.name}", autoRefreshed = true) private String name; // getter }
九、nacos配置文件后綴選取
我們可以自定義配置文件后綴名,方便應(yīng)用在不同的環(huán)境中使用不同的配置文件。示例:
在application-dev.properties中聲明配置文件后綴名:
spring.profiles.active=dev ## ## 下面這行是自定義nacos配置文件的后綴名 ## spring.cloud.nacos.config.file-extension=properties