返回
Spring Cloud Alibaba 升级踩坑记录
后端
2023-09-04 23:30:41
记一次 Spring Cloud Alibaba 升级踩坑记录
前言
本文主要介绍在升级 Spring Cloud Alibaba 版本的时候遇到的两个坑:一是 bootstrap 配置文件不生效问题,二是如何不使用 bootstrap 配置文件来与 Nacos 整合。
坑一:bootstrap 配置文件不生效
在升级 Spring Cloud Alibaba 版本后,发现 bootstrap 配置文件中的配置不生效了。经过排查,发现是由于 Spring Boot 2.6.x 版本中引入了新的配置加载机制,导致 bootstrap 配置文件中的配置被覆盖。
解决方法:
在 application.properties 或 application.yml 文件中显式指定 bootstrap 配置文件的路径。例如:
spring.config.additional-location=classpath:bootstrap.properties
坑二:不使用 bootstrap 配置文件与 Nacos 整合
在某些情况下,可能需要不使用 bootstrap 配置文件来与 Nacos 整合。例如,当需要在运行时动态修改 Nacos 地址时。
解决方法:
可以使用 Nacos 的动态配置功能来实现不使用 bootstrap 配置文件与 Nacos 整合。具体步骤如下:
- 在 application.properties 或 application.yml 文件中配置 Nacos 服务地址。例如:
spring.cloud.nacos.server-addr=127.0.0.1:8848
- 在代码中监听 Nacos 配置变更。例如:
@Configuration
public class NacosConfigListener {
@Value("${spring.cloud.nacos.config.data-id}")
private String dataId;
@Bean
public NacosConfigListener nacosConfigListener() {
return new NacosConfigListener();
}
@NacosPropertySource(dataId = "${spring.cloud.nacos.config.data-id}", autoRefreshed = true)
public void configListener(NacosConfigProperties properties) {
System.out.println("Nacos config changed: " + properties.getContent());
}
}
这样,当 Nacos 中的配置发生变更时,代码中的监听器会自动获取最新的配置。
总结
在升级 Spring Cloud Alibaba 版本时,需要注意 bootstrap 配置文件的生效问题。同时,了解不使用 bootstrap 配置文件与 Nacos 整合的方法也是非常有用的。希望本文能够帮助大家避免在升级过程中遇到的类似问题。