Nacos Spring Cloud 实现配置热加载
0x01:安装 Nacos
下载安装包,
https://github.com/alibaba/nacos/releases
从下载 nacos-server-$version.zip 安装包。
解压安装包后,在 bin 目录下运行 startup.cmd
访问
http://localhost:8848/nacos/
即可进入 nacos 控制台中心,默认账号 / 密码都是 nacos
0x02:Nacos config
Spring Cloud Alibaba Nacos Config
Nacos 提供用于存储配置和其他元数据的 key/value 存储,为分布式系统中的外部化配置提供服务器端和客户端支持。使用 Spring Cloud Alibaba Nacos Config,您可以在 Nacos Server 集中管理你 Spring Cloud 应用的外部属性配置。
Spring Cloud Alibaba Nacos Config 是 Config Server 和 Client 的替代方案,客户端和服务器上的概念与 Spring Environment 和 PropertySource 有着一致的抽象,在特殊的 bootstrap 阶段,配置被加载到 Spring 环境中。当应用程序通过部署管道从开发到测试再到生产时,您可以管理这些环境之间的配置,并确保应用程序具有迁移时需要运行的所有内容。
0x03:Nacos 配置热加载
1. 添加依赖
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
2. 在 resources 文件夹添加 bootstrap.properties 配置文件
# 服务名
spring.application.name=mall_member
spring.cloud.nacos.config.server-addr=127.0.0.1:8848
3. 在 nacos 后台控制中心新建一个命名空间
该步主要是为了进行各微服务之间的配置隔离,各微服务有各自的配置文件。
4. 在新建的命名空间中配置文件
配置文件列表如下
5. 添加新配置文件
新建配置文件
6. 项目中应用 Nacos 配置中心的配置文件
如为了应用第5中的多个配置文件,需要在服务中的 bootstrap.properties 接着配置如下内容
spring.application.name=mall_coupon
spring.cloud.nacos.config.server-addr=127.0.0.1:8848
# 需要使用的命名空间
spring.cloud.nacos.config.namespace=279c8f44-b257-48df-b2d6-d1cd0d6b6d42
# 需要使用的组
spring.cloud.nacos.config.group=dev
# 其他配置
#配置文件名称
spring.cloud.nacos.config.ext-config[0].data-id=datasources.yml
#配置文件所属的组
spring.cloud.nacos.config.ext-config[0].group=dev
#是否自动刷新,如果此项为true,当我们修改配置中心的这个配置文件时,服务会自动应用
spring.cloud.nacos.config.ext-config[0].refresh=true
spring.cloud.nacos.config.ext-config[1].data-id=mybatis.yml
spring.cloud.nacos.config.ext-config[1].group=dev
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=dev
spring.cloud.nacos.config.ext-config[2].refresh=true
9. 动态获取配置
需要添加注解
@RefreshScope //一般在Controller中添加,表示动态获取配置
@Value("${配置的key值}") //获取配置文件的值
8. 启动测试
重启项目,测试配置项是否应用上,可以测试更改配置内容,观察到无需重启服务也能应用上新的配置,这就是 Nacos 的强大之处。
喜欢,在看