nacos实现配置文件的热更新,服务不用重启即可读取到nacos配置中心修改发布后的最新值,spring,springboot项目读取本地配置文件的各种方式;文章中介绍了一下注解的使用:@NacosConfigurationProperties,@NacosPropertySource,@ConfigurationProperties,@NacosValue,@value,@RefreshScope,@EnableNacosConfig。
使用nacos的企业越来越多,nacos确实很好用,最近就抽时间研究了一下nacos配置文件的热更新的几种方式,顺便复习了一下读取本地配置文件的几种方式。
文章最后提供源码连接,不坑人,完全自己写的,绝对可用。
一、nacos配置文件热更新的几种方式
热更新,顾名思义就是在不用重启服务的情况下,实现配置的更新,服务的重启可能对项目的影响很大,所以nacos肯定是支持热更新的,我一共总结了4种方式,可以实现nacos的热更新,网上也找了很多,要么那些文章是从别的地方复制粘贴过来的不能用,要么就是pom依赖不对,总之搞不好,很头疼。所以我自己完整弄一遍(首先要安装好nacos服务端,这里就略过了)。
1、新建项目,pom引入
1、父模块引入pom
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.example</groupId>
<artifactId>NacosConfig</artifactId>
<packaging>pom</packaging>
<version>1.0-SNAPSHOT</version>
<modules>
<module>NacosValueExample</module>
</modules>
<properties>
<spring-boot.version>2.2.8.RELEASE</spring-boot.version>
<spring-cloud.version>Hoxton.RELEASE</spring-cloud.version>
<spring-cloud-alibaba.version>2.2.0.RELEASE</spring-cloud-alibaba.version>
<nacos-spring-context.version>0.2.2-RC1</nacos-spring-context.version>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>${spring-boot.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>${spring-cloud-alibaba.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>com.alibaba.nacos</groupId>
<artifactId>nacos-spring-context</artifactId>
<version>${nacos-spring-context.version}</version>
</dependency>
</dependencies>
</dependencyManagement>
</project>
2、子模块引入pom
<dependencies>
<depe