返回

Spring Cloud Alibaba 升级踩坑记录

后端

记一次 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 整合。具体步骤如下:

  1. 在 application.properties 或 application.yml 文件中配置 Nacos 服务地址。例如:
spring.cloud.nacos.server-addr=127.0.0.1:8848
  1. 在代码中监听 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 整合的方法也是非常有用的。希望本文能够帮助大家避免在升级过程中遇到的类似问题。