1、在项目中引入Nacos配置中心
在启动示例进行演示之前,我们先了解一下 Spring Cloud 应用如何接入 Nacos Config。 注意 本章节只是为了便于您理解接入方式,本示例代码中已经完成接入工作,您无需再进行修改。
-
首先,修改 pom.xml 文件,引入 Nacos Config Starter。
<dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> </dependency>
-
在应用的 /src/main/resources/bootstrap.properties 配置文件中配置 Nacos Config 元数据
spring.application.name=ttmall-coupon
spring.cloud.nacos.config.server-addr=127.0.0.1:8848 -
在应用的 src/main/resources/application.properties配置文件中添加如下测试配置数据
coupon.user.name=zhangsan
coupon.user.age=11 -
完成上述步骤后,应用会从 Nacos Config 中获取相应的配置,并添加在 Spring Environment 的 PropertySources 中。这里我们使用 @Value 注解来将对应的配置注入到 SampleController 的 userName 和 age 字段。并编写测试方法打印 userName 和 age 。
RestController
@RequestMapping("coupon/coupon")
public class CouponController {
@Autowired
private CouponService couponService;
@Value("${coupon.user.name}")
String name;
@Value("${coupon.user.age}")
int age;
@RequestMapping("/member/testNacosConf")
public R testNacosConf(){
return R.ok().put("name",name).put("age",age);
}
}启动服务,并访问测试方法url:http://localhost:7000/coupon/coupon/member/testNacosConf
结果如下:
2、使用Nacos配置中心动态的获取配置信息
-
在 Nacos 版本自带控制台中新建如下配置:
dataId 为 nacos-config-example.properties group 为 DEFAULT_GROUP 内容如下 coupon.user.id= coupon.user.name= coupon.user.age=
2、在controller上添加注解@RefreshScope 可以从nacos配置中心来动态刷新配置
重新访问测试类方法,效果如下:
3、Nacos配置中心 使用进阶
3.1、命名空间:配置隔离
默认:public(保留空间),默认所有的新增配置都在public空间下
场景一:实际开发中,可以有开发、测试、生产 等空间,可以利用命名空间来做环境隔离
1、新建如下命名空间
2、在配置列表中选择dev命名空间,添加如下配置
3、在src/main/resources/bootstrap.properties 中添加nacos命名空间配置
spring.cloud.nacos.config.namespace=cdbef139-c55c-4787-9906-853a0b5e463b
其中namespace的值从这里获取
4、重启服务,访问测试类方法,效果如下:
场景二:每一个微服务之间互相隔离配置,每一个微服务都创建自己的命名空间,只加载自己命名空间下的配置
重启服务,访问测试类方法,效果如下:
3.2、配置集
一组相关或者不相关的配置项的集合称为配置集,一个配置文件通常就是一个配置集
3.3、配置集ID
类似于配置文件名,即Data ID(就是配置的名字加类型)
3.4、配置分组
默认所有的配置集都属于DEFAULT_GROUP组
。可以根据某个时期,或者某个事件等进行分组,例如电商可以根据双十一,618的优惠策略来修改分组。
使用场景:每个微服务创建自己的命名空间,使用配置分组来区分环境:dev test prod
1、在命名空间coupon 下创建两个配置,配置分组分别为:dev test ,配置内容如下
2、在coupon服务配置文件bootstrap.properties 中新增如下配置:
spring.cloud.nacos.config.group=dev
3、重启服务,访问测试类方法,效果如下:
3.5、使用不同的配置分组加载多个配置集
使用场景:在实际开发中,会有多个配置文件需要加载,我们需要将不同的配置文件搭配命名空间和配置分组来使用
1、我们将application.yml中的配置拆分成如下几个配置文件进行测试
2、在coupon服务配置文件bootstrap.properties 中新增如下配置:
spring.cloud.nacos.config.ext-config[0].data-id=mybatis.yml spring.cloud.nacos.config.ext-config[0].group=DEFAULT_GROUP spring.cloud.nacos.config.ext-config[0].refresh=true spring.cloud.nacos.config.ext-config[1].data-id=datasource.yml spring.cloud.nacos.config.ext-config[1].group=DEFAULT_GROUP spring.cloud.nacos.config.ext-config[1].refresh=true spring.cloud.nacos.config.ext-config[2].data-id=other.yml spring.cloud.nacos.config.ext-config[2].group=DEFAULT_GROUP spring.cloud.nacos.config.ext-config[2].refresh=true
3、将原来系统配置文件application.yml中的配置全部注释
4、重启服务,访问测试类方法,效果如下: