vlambda博客
学习文章列表

Nacos动态刷新配置(二)

 
   
   
 

上篇讲了nacos注册发现的使用,这节我们来看下nacos配置服务。

从架构图可以看出,Nacos提供了两种服务, 一种是用于服务注册、发现的Naming Service,一种是用于配置中心、动态配置的Config Service,而他们底层均由core模块来支持。外层提供OpenAPI供客户端使用,并提供了User Console、Admin Console方便用户使用 。

Nacos动态刷新配置(二)

配置中心搭建

添加依赖

这里我介绍的是基于上一篇【】的配置来的。

<!--nacos实现配置的动态变更--><dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId></dependency>

修改配置文件


创建bootstrap.yml文件

server: port: 1001spring: application: name: nacos-config cloud: nacos: discovery: server-addr: 127.0.0.1:8848 config: server-addr: 127.0.0.1:8848 #file-extension: ymlusers: name: dev在路上的小蚂蚁 age: 16


如上图所示,配置信息,主要是application name和nacos的配置信息。

file-extension为配置内容的数据格式,可以支持 properties 和 yaml 类型。

我这里先按照默认的配置演示一下


Nacos动态刷新配置(二)

 

编写读取配置类

编写控制层读取这两个属性值

读取方式不限,我这里是使用@Value来获取,示例如下:

Nacos动态刷新配置(二)


值得注意的是需要加入注解:@RefreshScope,才能够实现动态刷新的配置效果。

先不进行配置,测试该接口获取的配置:


Nacos动态刷新配置(二)

 

控制台配置

properties文件动态配置

在【配置管理】-【配置列表】里,创建配置文件。

Nacos动态刷新配置(二)

 

Nacos动态刷新配置(二)

 

配置文件命名方式

Data ID定义规则是:${prefix}-${spring.profiles.active}.${file-extension}

1)prefix 默认为 spring.application.name 的值,也可以通过配置项spring.cloud.nacos.config.prefix 来配置。

2)spring.profiles.active 即为当前环境对应的 profile,可以通过配置项 spring.profiles.active 来配置。

3)file-exetension 为配置内容的数据格式,默认是properties ,可以通过配置项 spring.cloud.nacos.config.file-extension 来配置。目前只支持 properties 和 yaml 类型。

注意:当 spring.profiles.active 为空时,对应的连接符 - 也将不存在,dataId 的拼接格式变成 prefix.{prefix}.prefix.{file-extension}

比如,我们现在没有指定环境,先增加一个如:nacos-config.properties


Nacos动态刷新配置(二)

 

按此步骤,发布即可。

再次刷新获取配置接口:


Nacos动态刷新配置(二)

可以发现,我们的配置实时的更改了。

至此,nacos动态配置就实现了。

yml文件动态配置

上面说了,还支持yml文件动态配置,我们改造上面代码,上面说:file-exetension 为配置内容的数据格式,默认是properties,我们改为yml。


Nacos动态刷新配置(二)

 

重启项目,先刷新获取配置测试接口:


Nacos动态刷新配置(二)

还是原配置,接下来在控制台配置yml。


Nacos动态刷新配置(二)

 

刷新测试接口


Nacos动态刷新配置(二)

 

success!


指定环境动态配置

正常情况下开发环境和生产环境的配置肯定是不一样的,我们需要对指定环境进行响应的配置,当为开发环境是一套配置,生产环境是另一套配置。

这时我们需要指定运行环境

server: port: 1001spring: application: name: nacos-config cloud: nacos: discovery: server-addr: 127.0.0.1:8848 config: server-addr: 127.0.0.1:8848 file-extension: yml profiles: active: dev

加入spring.profiles.active=dev指定运行环境

dev环境示例如下:


Nacos动态刷新配置(二)

 

启动项目:http://localhost:1001/test/get

 

Nacos动态刷新配置(二)


没问题,接下来增加配置,格式为:${prefix}-${spring.profiles.active}.${file-extension}


Nacos动态刷新配置(二)

 

再次获取配置


Nacos动态刷新配置(二)

dev配置生效,我再测试下配置prod环境会不会生效。

增加prod配置

Nacos动态刷新配置(二)

现在运行的是dev环境,新建prod配置。

 

 

获取配置信息


 

结论:发现nacos可以根据运行环境来配置不同环境的配置信息。你学会了吗?



nacos服务完整示例代码已上传gitee:

https://gitee.com/sshengwei/ssw-record-project/tree/master/spring-cloud-alibaba-demo