环境: Springboot3.2 + jdk21 使用nacos2.3.0做配置中心, 数据库连接池使用的druid, druid-spring-boot-3-starter1.2.21
问题:在nacos中修改配置文件时,spring会关闭数据库连接池,但是并没有启动,导致数据库连接池无法使用
如图 在nacos修改数据时

修改后访问数据库报 Could not open JDBC Connection for transaction

求解。
环境: Springboot3.2 + jdk21 使用nacos2.3.0做配置中心, 数据库连接池使用的druid, druid-spring-boot-3-starter1.2.21
问题:在nacos中修改配置文件时,spring会关闭数据库连接池,但是并没有启动,导致数据库连接池无法使用
如图 在nacos修改数据时

修改后访问数据库报 Could not open JDBC Connection for transaction

求解。
关注引自免费微信小程序:皆我百晓生
从日志信息来看,当您在 Nacos 中修改配置文件时,Spring Boot 应用似乎正在进行重启以加载新的配置。在这个过程中,Druid 数据源被正常关闭("closing..." 和 "closed" 日志),但在应用重新启动后数据库连接池没有成功重新初始化或打开。
这个问题可能的原因及解决办法:
Nacos 配置监听与数据源生命周期冲突:确保在 Spring Boot 重启时,Druid 数据源的生命周期能正确管理,即在应用上下文关闭时释放资源,在初始化阶段重新建立连接池。
配置刷新问题:检查您的 Spring Boot 自动配置或相关配置类,确保在配置刷新时数据源能够得到重建。您可以尝试使用 @RefreshScope 注解在配置 Druid 数据源的 Bean 上,以便在配置更改时自动重新创建该 Bean。
依赖版本兼容性问题:检查 Druid、Druid-Spring-Boot-Starter 以及 Spring Boot 版本之间的兼容性,确保它们可以协同工作。
配置错误:请确保 Nacos 中用于数据库连接的相关配置正确无误,并且在应用重新启动后仍能生效。
日志配置问题:虽然不是直接导致数据库连接失败的原因,但多次出现“Load Logback Configuration of Nacos fail”表明 Nacos 的日志配置存在问题,建议排查并解决。
针对具体问题,请进一步检查您的代码和配置,特别是 Spring Boot 初始化过程中的数据源配置部分。同时,确保数据库服务本身是正常的,可以在应用重启后重新建立连接。