终极指南:dynamic-datasource多模块依赖与完整导入配置详解 🚀
dynamic-datasource 是一个强大的 Spring Boot 多数据源动态切换框架,支持主从分离、读写分离和分布式事务等高级功能。本文将为您提供完整的导入配置指南,帮助您快速集成这个功能丰富的动态数据源解决方案。
📦 多模块架构解析
dynamic-datasource 采用模块化设计,根据不同的 Spring Boot 版本和功能需求分为多个独立模块:
核心模块依赖关系
dynamic-datasource-creator
↓
dynamic-datasource-spring
↓
dynamic-datasource-spring-boot-common
↓
├── dynamic-datasource-spring-boot-starter (Spring Boot 2.x)
├── dynamic-datasource-spring-boot3-starter (Spring Boot 3.x)
└── dynamic-datasource-spring-boot4-starter (Spring Boot 4.x)
模块功能详解
1. 基础创建器模块 - dynamic-datasource-creator
- 数据源创建核心逻辑
- 支持多种连接池:Druid、HikariCP、BeeCP、DBCP2、C3P0
- 支持分布式事务:Atomikos、Oracle UCP
- 关键文件:DataSourceCreator.java
2. Spring 核心模块 - dynamic-datasource-spring
- Spring 框架集成
- AOP 切面编程支持
- 注解驱动配置
- 事务管理支持
- 关键文件:DynamicRoutingDataSource.java
3. Spring Boot 公共模块 - dynamic-datasource-spring-boot-common
- Spring Boot 自动配置
- 属性配置支持
- 健康检查集成
- 关键文件:DynamicDataSourceAutoConfiguration.java
🔧 版本选择与依赖配置
根据 Spring Boot 版本选择
| Spring Boot 版本 | JDK 要求 | 推荐 Starter 模块 | 主要特性 |
|---|---|---|---|
| 1.5.x ~ 2.x.x | JDK 8+ | dynamic-datasource-spring-boot-starter | 兼容性好,功能全面 |
| 3.x.x | JDK 17+ | dynamic-datasource-spring-boot3-starter | Jakarta EE 9+ 支持 |
| 4.x.x | JDK 17+ | dynamic-datasource-spring-boot4-starter | 最新 Spring Boot 4 支持 |
Maven 依赖配置示例
Spring Boot 2.x 项目
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>dynamic-datasource-spring-boot-starter</artifactId>
<version>4.5.0</version>
</dependency>
Spring Boot 3.x 项目
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>dynamic-datasource-spring-boot3-starter</artifactId>
<version>4.5.0</version>
</dependency>
Spring Boot 4.x 项目
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>dynamic-datasource-spring-boot4-starter</artifactId>
<version>4.5.0</version>
</dependency>
Gradle 依赖配置示例
// Spring Boot 2.x
implementation 'com.baomidou:dynamic-datasource-spring-boot-starter:4.5.0'
// Spring Boot 3.x
implementation 'com.baomidou:dynamic-datasource-spring-boot3-starter:4.5.0'
// Spring Boot 4.x
implementation 'com.baomidou:dynamic-datasource-spring-boot4-starter:4.5.0'
🎯 连接池依赖配置
1. Druid 连接池
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.2.27</version>
</dependency>
2. HikariCP 连接池
<dependency>
<groupId>com.zaxxer</groupId>
<artifactId>HikariCP</artifactId>
<version>2.4.13</version>
</dependency>
3. 其他连接池支持
- BeeCP:
com.github.chris2018998:beecp:3.4.2 - DBCP2:
org.apache.commons:commons-dbcp2:2.10.0 - C3P0:
com.mchange:c3p0:0.10.1 - Atomikos:
com.atomikos:transactions-jdbc:4.0.6 - Oracle UCP:
com.oracle.database.spring:oracle-spring-boot-starter-ucp:23.4.0
⚙️ 快速配置指南
基础 YAML 配置
spring:
datasource:
dynamic:
enabled: true
primary: master
strict: false
datasource:
master:
url: jdbc:mysql://localhost:3306/master_db
username: root
password: 123456
driver-class-name: com.mysql.cj.jdbc.Driver
slave_1:
url: jdbc:mysql://localhost:3307/slave_db_1
username: root
password: 123456
driver-class-name: com.mysql.cj.jdbc.Driver
slave_2:
url: jdbc:mysql://localhost:3308/slave_db_2
username: root
password: 123456
driver-class-name: com.mysql.cj.jdbc.Driver
高级特性配置
1. 数据源分组
spring:
datasource:
dynamic:
datasource:
master:
# 主库配置
slave_1:
# 从库1
slave_2:
# 从库2
groups:
slave: slave_1,slave_2 # 定义从库组
2. 连接池配置
spring:
datasource:
dynamic:
datasource:
master:
url: jdbc:mysql://localhost:3306/master_db
username: root
password: 123456
type: com.zaxxer.hikari.HikariDataSource
hikari:
maximum-pool-size: 20
minimum-idle: 5
connection-timeout: 30000
🔄 模块间依赖关系详解
编译时依赖
- dynamic-datasource-spring-boot-starter → dynamic-datasource-spring-boot-common
- dynamic-datasource-spring-boot-common → dynamic-datasource-spring
- dynamic-datasource-spring → dynamic-datasource-creator
运行时可选依赖
- Druid: 监控、SQL 防火墙、连接泄漏检测
- HikariCP: 高性能连接池
- MyBatis-Plus: 增强的 MyBatis 功能
- Seata: 分布式事务支持
- P6Spy: SQL 日志输出
🚀 最佳实践建议
1. 版本兼容性
- 确保 Spring Boot 版本与对应的 starter 模块匹配
- 检查 JDK 版本要求(Spring Boot 3.x+ 需要 JDK 17+)
2. 连接池选择
- 高性能场景:推荐 HikariCP
- 监控需求:推荐 Druid
- 企业级:Oracle UCP 或 Atomikos
3. 配置优化
- 根据业务场景调整连接池参数
- 合理设置数据源分组
- 启用数据源健康检查
4. 事务管理
- 单数据源事务:使用 Spring 原生
@Transactional - 多数据源事务:使用
@DSTransactional - 分布式事务:集成 Seata
📊 模块功能对比表
| 模块名称 | 主要功能 | 适用场景 | 关键文件 |
|---|---|---|---|
| dynamic-datasource-creator | 数据源创建、连接池集成 | 底层数据源创建 | BasicDataSourceCreator.java |
| dynamic-datasource-spring | Spring 集成、AOP 切面 | Spring 框架项目 | DS.java |
| dynamic-datasource-spring-boot-starter | Spring Boot 2.x 自动配置 | Spring Boot 2.x 项目 | DynamicDataSourceAutoConfiguration.java |
💡 常见问题解决
1. 依赖冲突问题
- 检查 Spring Boot 版本与 starter 版本匹配
- 排除冲突的依赖版本
- 使用 Maven 的
dependencyManagement统一版本
2. 配置不生效
- 确保
spring.datasource.dynamic.enabled=true - 检查数据源配置格式是否正确
- 验证连接池依赖是否已添加
3. 性能优化
- 合理设置连接池大小
- 启用连接池监控
- 使用合适的数据源策略
🎉 总结
dynamic-datasource 的多模块设计提供了灵活的集成方案,无论您使用的是 Spring Boot 2.x、3.x 还是 4.x,都能找到合适的 starter 模块。通过合理的依赖配置和模块选择,您可以轻松实现多数据源动态切换、读写分离和分布式事务等高级功能。
记住关键点:
- 正确选择版本:根据 Spring Boot 版本选择对应的 starter
- 合理配置依赖:按需引入连接池和其他组件
- 优化配置参数:根据业务需求调整连接池和数据源配置
- 利用高级特性:数据源分组、动态切换、事务管理等
通过本文的完整导入配置指南,您可以快速上手 dynamic-datasource,享受多数据源管理带来的便利和灵活性!🎯
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



