目录
- Spring Cloud Alibaba | Nacos配置管理
- 1. pom.xml 项目依赖
- 2. 在 bootstrap.properties 中配置 Nacos server 的地址和应用名
- 3. 通过 Spring Cloud 原生注解
@RefreshScope
实现配置自动更新: - 4. 测试
Spring Cloud Alibaba | Nacos配置管理
Springboot: 2.1.6.RELEASE
SpringCloud: Greenwich.SR1
如无特殊说明,本系列文章全采用以上版本
上一篇《Spring Cloud Alibaba | Nacos服务注册与发现》我们聊了Nacos服务注册与发现,这一篇我们接着聊Nacos配置管理。
Nacos具有配置管理的功能,在Spring Cloud中可以用作配置中心,代替Spring Cloud Config组件,下面我们聊一下Nacos如何和Spring Cloud集成配置中心。
创建一个项目:nacos-config
1. pom.xml 项目依赖
4.0.0
org.springframework.boot
spring-boot-starter-parent
2.1.6.RELEASE
com.springcloud
nacos-config
0.0.1-SNAPSHOT
nacos-config
Demo project for Spring Boot
1.8
org.springframework.boot
spring-boot-starter-web
org.springframework.cloud
spring-cloud-starter-alibaba-nacos-config
0.9.0.RELEASE
org.springframework.boot
spring-boot-starter-test
test
org.springframework.boot
spring-boot-maven-plugin
主要引入spring-cloud-starter-alibaba-nacos-config,为开启nacos配置中心
更多版本对应关系请参考:《Spring Cloud Alibaba | Nacos服务中心初探》。
2. 在 bootstrap.properties 中配置 Nacos server 的地址和应用名
spring.cloud.nacos.config.server-addr=127.0.0.1:8848
spring.application.name=spring-cloud-nacos-config
说明:之所以需要配置 spring.application.name ,是因为它是构成 Nacos 配置管理 dataId字段的一部分。
在 Nacos Spring Cloud 中,dataId 的完整格式如下:
${prefix}-${spring.profile.active}.${file-extension}
prefix
默认为spring.application.name
的值,也可以通过配置项spring.cloud.nacos.config.prefix
来配置。spring.profile.active
即为当前环境对应的profile
,详情可以参考Spring Boot
文档。 注意:当spring.profile.active
为空时,对应的连接符 - 也将不存在,dataId
的拼接格式变成${prefix}.${file-extension}
file-exetension
为配置内容的数据格式,可以通过配置项spring.cloud.nacos.config.file-extension
来配置。目前只支持properties
和yaml
类型。
3. 通过 Spring Cloud 原生注解 @RefreshScope
实现配置自动更新:
package com.springcloud.nacosconfig.controller;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* Created with IntelliJ IDEA.
*
* @Date: 2019/7/14
* @Time: 18:13
* @email: [email protected]
* Description:
*/
@RestController
@RequestMapping("/config")
@RefreshScope
public class ConfigController {
@Value("${useLocalCache:false}")
private boolean useLocalCache;
@RequestMapping("/get")
public boolean get() {
return useLocalCache;
}
}
4. 测试
首先通过调用 Nacos Open API
向 Nacos Server
发布配置:dataId 为example.properties
,内容为useLocalCache=true
curl -X POST "http://127.0.0.1:8848/nacos/v1/cs/configs?dataId=spring-cloud-nacos-config.properties&group=DEFAULT_GROUP&content=useLocalCache=false"
运行 NacosConfigApplication
,调用 curl http://localhost:8080/config/get
,返回内容是 true
。
再次调用 Nacos Open API
向 Nacos server
发布配置:dataId 为example.properties
,内容为useLocalCache=false
curl -X POST "http://127.0.0.1:8848/nacos/v1/cs/configs?dataId=spring-cloud-nacos-config.properties&group=DEFAULT_GROUP&content=useLocalCache=true"
再次访问 http://localhost:8080/config/get
,此时返回内容为false
,说明程序中的useLocalCache
值已经被动态更新了。
至此,Nacos配置管理已经介绍完成。
参考:
https://nacos.io/zh-cn/docs/quick-start-spring-cloud.html
Github-示例代码