pom.xml 引入 Nacos Config Starter
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
bootstrap.properties中配置 Nacos Config 元数据
bootstrap.properties在springboot中是优先于Application.yml的。会覆盖项目中gulimall-coupon.properties的属性值。
bootstrap.properties
spring:
application:
name: gulimall-coupon
cloud:
nacos:
config:
server-addr: xxx.xxx.xxx.xx:8848
Application.yml添加属性值
Application.yml
coupon:
user:
name: 唐1
age: 28
编写测试接口
@RestController
public class ConfigTestController {
@Value("${coupon.user.name}")
private String name;
@Value("${coupon.user.age}")
private int age;
@RequestMapping("/testConfig")
public R testConfig() {
return R.ok().put("name", name).put("age", age);
}
}
nacos配置中心 添加 数据集
group_id=gulimall-coupon.properties(应用名.properties)
添加属性
coupon.user.name=唐2
coupon.user.age=29
测试
但是nacos修改配置文件,实时发布发现不能更新属性值。
在controller类添加@RefreshScope注解(动态刷新配置),即可。
总结
- 引入pom依赖
- 创建bootstrap.properties
- 配置中心添加数据集
- 动态获取配置@RefreshScope @Value
- 如果配置中心与当前应用的配置文件都配置了相同的项,优先使用配置中心的配置
名称空间
命名空间:用于进行租户粒度的配置隔离。不同的命名空间下,可以存在相同的 Group 或 Data ID 的 配置。Namespace的常用场景之一是不同环境的配置的区分隔离,例如开发测试环境和生产环境的资源(如配置、服务)隔离等。
Namespace设置:
spring:
application:
name: gulimall-coupon
cloud:
nacos:
config:
server-addr: xxx.xxx.xxx.xx:8848
namespace: 0fea795c-cabd-4d0b-9f8d-a419823c1eeb
配置分组
配置分组: Nacos中的一组配置集,是组织配置的维度之一。通过一个有意义的字符串(如 dev 或 prod)对配置集进行分组,从而区分 Data ID相同的配置集。当您在Nacos上创建一个配置时,如果未填写配置分组的名称,则配置分组的名称默认采用DEFAULT_GROUP。
每个微服务创建自己的 namespace 进行隔离,group 来区分 dev,beta,prod 等环境。
加载多配置
springboot默认的配置文件是:服务名.properties
也可以在默认的基础上添加额外的配置文件,比如可以将数据库信息,中间件信息等放到不同的配置文件里,通过在bootstrap.yml添加如下配置
spring.cloud.nacos.config.server-addr=127.0.0.1:8848
spring.cloud.nacos.config.namespace=31568de9-fa28-41c9-b0bd-c754ce319ed4
spring.cloud.nacos.config.ext-config[0].data-id=gulimall-datasource.yml
spring.cloud.nacos.config.ext-config[0].refresh=false
spring.cloud.nacos.config.ext-config[0].group=dev