vlambda博客
学习文章列表

Nacos Spring Cloud 实现配置热加载

0x01:安装 Nacos

下载安装包,

https://github.com/alibaba/nacos/releases

从下载 nacos-server-$version.zip 安装包。

解压安装包后,在 bin 目录下运行 startup.cmd

Nacos Spring Cloud 实现配置热加载

访问

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 后台控制中心新建一个命名空间

该步主要是为了进行各微服务之间的配置隔离,各微服务有各自的配置文件。

Nacos Spring Cloud 实现配置热加载


4.  在新建的命名空间中配置文件

配置文件列表如下

Nacos Spring Cloud 实现配置热加载

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 的强大之处。



喜欢,在看