原始版本
<spring-boot.version>2.3.12.RELEASE</spring-boot.version> <spring-cloud.version>Hoxton.SR12</spring-cloud.version> <spring-cloud-alibaba.version>2.2.8.RELEASE</spring-cloud-alibaba.version>
升级后的版本
<spring-boot.version>2.6.11</spring-boot.version> <spring-cloud.version>2021.0.4</spring-cloud.version> <spring-cloud-alibaba.version>2021.0.4.0</spring-cloud-alibaba.version>
问题:按照官方文档的步骤无法动态刷新配置
1、本来以为是nacos版本不对,在git上找到一张版本对应图
于是把nacos服务端更新为2.0.4版本,结论:无效果
2、去到官方给的nacos示例代码查看配置文件,发现是写在bootstrap.properties配置内的,忽然想起来bootstrap.properties或者bootstrap.yml文件都是先于application.yaml文件加载的,我把配置写到了application.yaml文件内了;
于是我把对应的配置移到bootstrap.yml文件内,程序启动报错
上网找了一下原因:
产生问题的原因是bootstrap.properties比application.properties的优先级要高
由于bootstrap.properties是系统级的资源配置文件,是用在程序引导执行时更加早期配置信息读取;
而application.properties是用户级的资源配置文件,是用来后续的一些配置所需要的公共参数。
但是在SpringCloud 2020.* 版本把bootstrap禁用了,导致在读取文件的时候读取不到而报错,所以我们只要把bootstrap从新导入进来就会生效了。
<!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-bootstrap --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-bootstrap</artifactId> <version>3.0.3</version> </dependency>
问题得以解决
结论:
1、启用bootstrap
2、配置中心配置信息写到bootstrap.yml或者bootstrap.properties文件内