xxley 2024-01-26 16:54 采纳率: 10%
浏览 73
已结题

Springboot3.2 使用nacos做配置中心,会关闭数据库连接池

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

img

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

img

求解。

  • 写回答

7条回答 默认 最新

  • 专家-赤兔[在线] 优质创作者: 编程框架技术领域 2024-01-26 16:55
    关注

    引自免费微信小程序:皆我百晓生

    从日志信息来看,当您在 Nacos 中修改配置文件时,Spring Boot 应用似乎正在进行重启以加载新的配置。在这个过程中,Druid 数据源被正常关闭("closing..." 和 "closed" 日志),但在应用重新启动后数据库连接池没有成功重新初始化或打开。

    这个问题可能的原因及解决办法:

    1. Nacos 配置监听与数据源生命周期冲突:确保在 Spring Boot 重启时,Druid 数据源的生命周期能正确管理,即在应用上下文关闭时释放资源,在初始化阶段重新建立连接池。

    2. 配置刷新问题:检查您的 Spring Boot 自动配置或相关配置类,确保在配置刷新时数据源能够得到重建。您可以尝试使用 @RefreshScope 注解在配置 Druid 数据源的 Bean 上,以便在配置更改时自动重新创建该 Bean。

    3. 依赖版本兼容性问题:检查 Druid、Druid-Spring-Boot-Starter 以及 Spring Boot 版本之间的兼容性,确保它们可以协同工作。

    4. 配置错误:请确保 Nacos 中用于数据库连接的相关配置正确无误,并且在应用重新启动后仍能生效。

    5. 日志配置问题:虽然不是直接导致数据库连接失败的原因,但多次出现“Load Logback Configuration of Nacos fail”表明 Nacos 的日志配置存在问题,建议排查并解决。

    针对具体问题,请进一步检查您的代码和配置,特别是 Spring Boot 初始化过程中的数据源配置部分。同时,确保数据库服务本身是正常的,可以在应用重启后重新建立连接。

    评论 编辑记录

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 1月26日
  • 创建了问题 1月26日