1.引入依赖
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>2.2.3.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
2.在微服务模块下的配置文件创建一个bootstrap.properties(名字Spring的固定格式,不可更改)
# 配置名字
spring.application.name=configTest
# 注册中心地址
spring.cloud.nacos.config.server-addr=127.0.0.1:8848
3.使用@RefreshScope:动态获取并刷新配置
输入测试数据:
在测试的类上加上 @RefreshScope 注解:
4.在Nacos的页面(http://localhost:8848/nacos)的配置管理进行配置
Data ID:nacosTest(即spring.application.name)
Grroup:测试情况下默认不填
配置内容:即需要交给Nacos动态管理的配置属性
5.测试
正常情况下是显示数据(不启用配置中心):
testName:jbp;testNum:50
如果是已经上线的项目,想更改这些配置属性,则需要在源码里进行更改,最后进行重新发布上线,在节点数比较多的情况下,显得非常麻烦。
启用配置中心后:
在Nacos配置中心更改配置属性后(源码的配置属性不发生变化)
在配置中心点击发布后,即可达到动态刷新的效果
即,同一配置属性在源码和配置中心都进行配置后,会优先读取配置中心的属性
结果:
相关的概念
命名空间
作用:配置隔离的作用。 默认:public(保留空间);默认新增的所有配置都在public空间
例如:配置成读取订单模块下的配置属性(默认读取public下的配置属性)
更改订单模块空间下的配置属性:
测试:
配置集
所有的配置的集合(类似于application.properties文件)
配置集ID( Data ID):类似文件名
配置分组
默认所有的配置集都属于:DEFAULT_GROUP
作用类似于命名空间
总结:一般用法为每个微服务创建自己的命名空间,使用配置分组区分环境,dev,test,prod
同时加载多个配置集
例:把本地的数据源配置,nacos注册中心,Mybatis 配置,端口等配置都放在远程配置中心,以数据源配置为例子,注释掉本地数据源配置
在bootstrap.properties进行配置:
nacos的远程配置:
测试: