您的位置:

nacos配置文件详解

一、nacos配置文件加载顺序

nacos中配置文件的加载顺序是优先加载group为“${spring.application.name}”的配置文件,其次加载“DEFAULT_GROUP”组的配置文件。同一group的同名配置项,优先级高的会覆盖优先级低的配置项。

举个例子,假设应用名为"demo",那么nacos会先加载group为“demo”的配置文件,如果找不到任何配置项,就会加载“DEFAULT_GROUP”组的配置文件。

二、nacos配置文件存在哪里

nacos配置文件可以存在于nacos的存储中心(nacos server),也可以存储在本地磁盘中。可以通过nacos的客户端来获取nacos存储中心中的配置文件,也可以使用spring cloud config实现从本地磁盘中获取配置文件。

通过nacos客户端获取nacos存储中心中的配置文件的代码示例:

@Autowired
private ConfigService configService;

public String getConfig(String dataId, String group, long timeout) throws NacosException {
    return configService.getConfig(dataId, group, timeout);
}

三、nacos配置文件命名规则

nacos的配置文件名字主要由dataId和group两部分组成,一个group下可以有多个dataId,同一个dataId下也可以有多个配置项,但是配置项必须用key-value方式进行配置。一个示例配置文件的dataId和group规则为:demo-service.properties:

dataId: demo-service.properties
group: DEFAULT_GROUP

四、nacos配置文件名称

nacos支持多种配置文件类型,如properties,yaml,json,txt等,具体的文件后缀名由应用自行指定,并在nacos配置文件中声明即可。nacos也支持按照环境进行配置文件命名,如demo-dev.properties、demo-test.properties等,具体命名规则要与应用开发人员协商。

五、nacos配置文件加密

为了安全起见,我们可以对配置文件中的敏感信息进行加密。nacos的配置项支持加密,我们可以在配置文件中声明需要加密的key,然后将敏感信息加密并替换原本在配置文件中的明文信息。nacos提供了内置的加密/解密插件,默认采用AES方式进行加密。

声明配置文件需要加密的示例:

## 开启加密配置项
encrypt.enable=true

## 需要加密的字段
name=ENC(k0K3EgbeT7IBBAm8J+kn0g==)

六、nacos配置文件优先级

同一group下,配置项按照优先级高低来进行覆盖。优先级的定义是在配置项的value值后添加三个点和一个数字,数字越大,优先级越高。示例:

name=value...
name=value.....
name=value......

七、nacos配置文件不生效

在使用nacos配置文件的过程中,我们可能遇到配置文件修改了但是生效不了的问题。一般情况下,可以检查以下几个方面:

1、检查配置文件是否已经成功发布到nacos服务器上。

2、检查应用的nacos配置文件客户端是否正常运行,注意端口和ip的配置是否正确。

3、检查nacos存储配置文件时的编码格式是否与应用中的编码格式一致。

4、检查配置文件中的占位符是否正确,如果存在错误的占位符,可能会导致配置文件不生效。

5、检查应用中是否与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配置文件后缀选取

我们可以自定义配置文件后缀名,方便应用在不同的环境中使用不同的配置文件。示例:

在application-dev.properties中声明配置文件后缀名:

spring.profiles.active=dev
 
##
## 下面这行是自定义nacos配置文件的后缀名 
##
spring.cloud.nacos.config.file-extension=properties