0-前言
上一篇我们介绍了nacos作为服务注册发现组件的功能,nacos还具有配置中心的功能,而且支持热加载;
在此之前,配置中心有Spring Cloud Config,实际上,用这个有很多风险和隐忧,有了nacos,我们可以大舒一口气了,Spring Cloud Config从此只存在垃圾桶;
1、运行nacos
跟上篇
2、集成nacos配置中心
2-1、添加依赖:
新建nacos-user-config模块,添加依赖:
<!-- 集成nacos 服务发现 --> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> <version>2.0.1.RELEASE</version> </dependency> <!-- 集成nacos 配置中心 --> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> <version>2.0.1.RELEASE</version> </dependency>
2-2、增加配置文件bootstap.yml
(不是application.yml文件,这个bootstrap是程序引导配置,先于application执行)
server: port: 8763 spring: application: name: nacos-user-config cloud: nacos: discovery: server-addr: 127.0.0.1:8848 config: server-addr: 127.0.0.1:8848 file-extension: yaml prefix: nacos-user-config profiles: active: dev
config:配置了nacos config server的地址,
file-extension:为配置内容的数据格式,表示扩展名是ymal(目前支持ymal和properties)
prefix:默认为 spring.application.name 的值
spring.profile.active: 即为当前环境对应的 profile
配置是和Nacos中的dataId 的格式是对应的,nacos种dataID的完整格式如下: ${prefix}-${spring.profile.active}.${file-extension}
以上配置,对应nacos中的dataID为:nacos-user-config-dev.yaml
注意:当 spring.profile.active 为空时,对应的连接符 - 也将不存在,dataId 的拼接格式变成 ${prefix}.${file-extension}
2-3、nacos 中增加配置项:
点击+号新增nacos-user-config微服务的配置项:
2-4、项目中应用
在Controller上添加 @RefreshScope 实现配置的热加载,代码如下:
@RestController @RequestMapping("/user") @RefreshScope //配置热加载 public class UserController { //------------配置中心测试 @Value("${username}") private String username; @RequestMapping("/username") public String wid() { return username; } }
2-5、运行测试
运行项目,可以看到已经读取到了nacos中的配置:
更新nacos中的配置并发布,这时候看到项目已经获取了最新的配置,说明实现了热加载: