dynamic-datasource 是一款极其简单的基于 spring-boot 的多数据源组件,可以方便快速的让你的系统支持多数据源。
https://gitee.com/baomidou/dynamic-datasource-spring-boot-starter
特性
- 支持 数据源分组 ,适用于多种场景 纯粹多库 读写分离 一主多从 混合模式。
- 支持数据库敏感配置信息 加密 ENC()。
- 支持每个数据库独立初始化表结构 schema 和数据库 database。
- 支持无数据源启动,支持懒加载数据源(需要的时候再创建连接)。
- 支持 自定义注解 ,需继承 DS (3.2.0+)。
- 提供并简化对 Druid,HikariCp,BeeCp,Dbcp2 的快速集成。
- 提供对 Mybatis-Plus,Quartz,ShardingJdbc,P6sy,Jndi 等组件的集成方案。
- 提供 自定义数据源来源 方案(如全从数据库加载)。
- 提供项目启动后 动态增加移除数据源 方案。
- 提供 Mybatis 环境下的 纯读写分离 方案。
- 提供使用 spel 动态参数 解析数据源方案。内置 spel,session,header,支持自定义。
- 支持 多层数据源嵌套切换 。(ServiceA >>> ServiceB >>> ServiceC)。
- 提供 基于 seata 的分布式事务方案。 附:不支持原生 spring 事务。
- 提供 本地多数据源事务方案。 附:不支持原生 spring 事务。
4.x主要变化:
- 分包:为了更好的适配springboot3同时保留对springboot1.5版本和2.x版本和java7用户的支持。
dynamic-datasource-spring-boot-starter 和dynamic-datasource-spring-boot3-starter。 - 本地事务新增了多数据源传播机制。
- 适配atomikos数据源。(作者还在详细测试-暂不出文档)
- 适配1.2.17+Druid数据源。
所有用法和以前版本没差异,不过分包过程中为了将来脱离spring。 你如果用到了动态添加移除数据源,建议只用DefaultCreator来创建。
版本选择
v3.5.2 这是springboot2最稳定的版本,缺点是对Druid的socketTimeout、connectTimeout不支持,不支持Druid1.2.17+版本。
v3.6.1 对Druid的socketTimeout、connectTimeout支持,不支持Druid1.2.17+版本。对springboot3提供了支持,不过支持没有v4.x版本干净,导致如果用到动态解析会有问题如@DS("header.xxx")。 如果没有动态解析需求这个版本其实也可以。
v4.1.1 这个是当前最稳定的版本,兼容springboot2和springboot3。不过还没有大规模用户使用
升级建议
如果当前版本用的好好的,后续也没有需要的特性建议不升级。
如果你对Druid最新版必须更新你只有升级到4.x稳定版。
v4.1.1 当前4.x最稳定版本
- 修复Druid加密失败。
v4.1.0
- fix ArrayStoreException during parsing annotations by@itinychengin#519
- fix:NoClassDefFoundError of TransactionFactory by@ZPZP1in#521
- fix: NPE when add datasources from provider. by@darknesstmin#525
v4.0.0
- 新增多数据源事务传播机制 by@zhaohaohin#406
- Migrating from Jakarta EE 9 to Jakarta EE 10 by@linghengqianin#474
- feat:增加适配atomikos数据源,支持同一个事务下多次切换数据源 by@ZhiFengJiain#481
- feat:增加多数据源事务传播属性NESTED by @zpbaba in#483
- feat: 支持Druid DataSource timeBetweenConnectErrorMillis Config by@xuwenping123in#489
- fix:fix log output information error by @zpbaba in#501
- fix:fix UUID generate blocked by @zpbaba in#507
- 修复SpringBoot 自动装配路径错误 by@jidaojiuyouin#510
还没有评论,来说两句吧...