一、添加配置
<!-- Nacos 动态更新配置 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
二、在Nacos Server里定义dataid
在这里我要提醒大家官网对 dataid的定义
dataid = ${prefix}-${spring.profile.active}.${file-extension}
* `prefix` 默认为 `spring.application.name` 的值,也可以通过配置项 `spring.cloud.nacos.config.prefix`来配置。
* `spring.profile.active` 即为当前环境对应的 profile,也就是项目配置文件中的 spring.profiles.active=dev。 **注意:当 `spring.profile.active` 为空时,对应的连接符 `-` 也将不存在,dataId 的拼接格式变成 `${prefix}.${file-extension}`**
* `file-exetension` 为配置内容的数据格式,可以通过配置项 `spring.cloud.nacos.config.file-extension` 来配置。目前只支持 `properties` 和 `yaml` 类型。
三、配置文件
一定要注意的是 Nacos 的在项目中 config的配置一定要写在 bootstrap.properties,注意是 bootstrap.properties ,不是 bootstrap.yml。Spring Boot 配置文件的加载顺序,依次为 bootstrap.properties -> bootstrap.yml ->application.properties -> application.yml,其中 bootstrap.properties 配置为最高优先级。
配置文件内容
server.port = 8080
spring.profiles.active=dev
# Nacos Server 的地址
spring.cloud.nacos.config.server-addr=127.0.0.1:8848
# 这里的对应 Nacos Server 中的 Data ID 的前缀
spring.application.name=order-server
# 这里的对应 Nacos Server 中的指定的配置规则格式和 Data ID 的后缀
spring.cloud.nacos.config.file-extension=yaml
# 关闭动态刷新,默认是开启
#spring.cloud.nacos.config.refresh.enabled=false
# 服务发现
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
# 值范围:1到100。值越大,重量越大。
spring.cloud.nacos.discovery.weight=1
# 集群名称
spring.cloud.nacos.discovery.cluster-name=order
四、测试运行
DemoOrderServerApplication 测试方式
public static void main(String[] args) {
ConfigurableApplicationContext applicationContext = SpringApplication.run(DemoOrderServerApplication.class, args);
String userName = applicationContext.getEnvironment().getProperty("aa");
System.out.println(userName);
}
动态监听方式
官方就是加了个 while(true) 哈哈哈哈哈,其实意思就是告诉我们,你在Nacos Server里更改的值,是可以被程序发现的。
注解方式运行
从以上的结果可以看到:
1、我们并没有在配置文件中配置 aa 这个属性,但是程序正确运行,且读到结果为1
2、我们通过更改Nacos Server的值,发现的确实现了动态更新。
可支持profile粒度的配置
从以上测试结果我们可以看出,Nacos 有默认配置一说,也就是不管你没有没有 profile 都会默认加载你的 dataid 为如下:
${spring.application.name}.${file-extension}
${spring.profiles.active} 当通过配置文件来指定时必须放在 bootstrap.properties 文件中。
五、命名空间 namespace
命名空间的使用建议和业务有关,比如是order,那么我们就在order的空间里面存放order-dev环境,order-test环境。
六、关于 Group 的配置
对于组的认识,我觉得就是给配置分类型,比如说环境是一组,数据是一组等。
七、支持可扩展的Data Id配置 及 优先级
基于对上面的理解以后,看这里其实看官方demo就知道是什么意思了,所以这里我就不在做测试说明了。 留下官方地址就行
八、完全关闭配置
通过设置 spring.cloud.nacos.config.enabled = false 来完全关闭 Spring Cloud Nacos Config