当前位置: 首页 > news >正文

Spring Boot整合Druid与Dynamic-Datasource多数据源配置:从错误到完美解决

本文记录在Spring Boot 2.X项目中整合Druid连接池和Dynamic-Datasource多数据源时遇到的典型错误DataSource returned null from getConnection()的完整解决过程,包含详细的错误分析和解决方案。

问题背景

在Spring Boot 2.7项目中,我需要整合:

  • Druid:阿里开源的数据库连接池,提供强大的监控功能
  • Dynamic-Datasource:基于MyBatis-Plus的多数据源组件

配置完成后启动项目,出现以下关键错误日志:

SqlSession [...] was not registered for synchronization because synchronization is not active
13:46:49.312 WARN  c.alibaba.druid.pool.DruidDataSource [1144] 
- getConnection but jdbcUrl is not set,jdbcUrl=null,username=nullCaused by: org.springframework.jdbc.CannotGetJdbcConnectionException: 
Failed to obtain JDBC Connection: DataSource returned null from getConnection(): {CreateTime:"2025-06-03 13:46:41",ActiveCount:0,PoolingCount:0,CreateCount:0,DestroyCount:0,CloseCount:0,ConnectCount:0,Connections:[]
}

错误原因深度分析

1. 数据源初始化失败

  • 连接池状态显示所有计数为0,表明数据源未正确初始化
  • Druid报出jdbcUrl is not set,说明关键连接参数未注入

2. 配置冲突(核心原因)

  • Druid自动配置Dynamic-Datasource自动配置 冲突
  • 手动创建的DataSource Bean覆盖了动态数据源配置

3. 连接池冲突

  • Spring Boot默认使用HikariCP连接池
  • 未排除HikariCP导致连接池实现冲突

4. 多数据源配置问题

  • @DS注解指定的数据源名称与配置不一致
  • YAML配置格式错误,数据源参数未正确绑定

完整解决方案

步骤1:修正依赖配置(pom.xml)

<dependencies><!-- 排除默认连接池 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-jdbc</artifactId><exclusions><exclusion><groupId>com.zaxxer</groupId><artifactId>HikariCP</artifactId></exclusion></exclusions></dependency><!-- Druid连接池 --><dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-starter
http://www.lqws.cn/news/108883.html

相关文章:

  • 推荐一款PDF压缩的工具
  • 【AI News | 20250603】每日AI进展
  • Cursor + Claude 4:海外工具网站开发变现实战案例
  • 《Spring Bean 是怎么被创建出来的?容器启动流程全景分析》
  • 网络原理1
  • C++ 中的依赖注入(Dependency Injection)
  • MySQL的备份和恢复
  • 系统思考:短期利益与长期系统影响
  • 物联网通信技术全景指南(2025)之如何挑选合适的物联网模块
  • 纯色图片生成器
  • 【Typst】1.Typst概述
  • 互联网c++开发岗位偏少,测开怎么样?
  • LEAP模型能源需求/供应预测、能源平衡表核算、空气污染物排放预测、碳排放建模预测、成本效益分析、电力系统优化
  • HCIP-Datacom Core Technology V1.0_3 OSPF基础
  • C++初赛的三讲
  • AUTOSAR CP——CanTrcv模块
  • JavaScript 字符串的常用方法有哪些?
  • Android 11以上App主动连接WIFI的完整方案
  • 机器学习——主成分分析(PCA)
  • LangChain核心之Runnable接口底层实现
  • Flowith,有一种Agent叫无限
  • Spring AI介绍及大模型对接
  • SpringCloud 分布式锁Redisson锁的重入性与看门狗机制 高并发 可重入
  • [Java 基础]运算符,将盒子套起来
  • leetcode hot100刷题日记——37.三数之和
  • 【HarmonyOS 5】鸿蒙APP使用【团结引擎Unity】开发的案例教程
  • SQL进阶之旅 Day 13:CTE与递归查询技术
  • 农业机器人的开发
  • QUIC——UDP实现可靠性传输
  • RTOS,其高级使用