# 版本支持
| dynamic-datasource | jdk |springboot |gravvel|druid|
| ---| --- | --- |--- |--- |
| 3.5.2 | jdk1.7+ |1.5.x和2.x.x和3.x.x |不支持|不支持1.2.17引入的socketTimeout和connectTimeout|
| 4.1.3 | jdk1.7+ |1.5.x和2.x.x和3.x.x |不支持|都支持|
| >=4.2.0 | jdk1.8+|1.5.x和2.x.x和3.x.x|支持|都支持|
- 新用戶建議直接使用4.x.x版本。
- 如果當前版本用的好好的,后續也沒有需要的特性建議不升級。
## 4.x主要變化:
1. 分包:為了更好的適配springboot3同時保留對springboot1.5版本和2.x版本和java7用戶的支持。
dynamic-datasource-spring-boot-starter 和dynamic-datasource-spring-boot3-starter。
2. 本地事務新增了多數據源傳播機制。
3. 適配atomikos數據源。(作者還在詳細測試-暫不出文檔)
4. 適配1.2.17+Druid數據源。
所有用法和以前版本沒差異,不過分包過程中為了將來脫離spring。 你如果用到了動態添加移除數據源,建議只用DefaultCreator來創建。
# 4.3.1
* fix 修復 啟動警告問題 by @JavaLionLi in https://github.com/baomidou/dynamic-datasource/pull/617
* perf(close-datasource): 在分組數據庫map刪除后刪除datasource by @BingChunMoLi in https://github.com/baomidou/dynamic-datasource/pull/618
* fix:事務后置回調中開啟事務死循環 by @ZPZP1 in https://github.com/baomidou/dynamic-datasource/pull/621
* feat: 增加 MySQL Connector/J 5.1 XADataSource 的支持 by @1s1y in https://github.com/baomidou/dynamic-datasource/pull/627
* fix:DruidDatasource無法關閉closed (baomidou#637) by @shen3 in https://github.com/baomidou/dynamic-datasource/pull/638
# 4.3.0
* 修復 Springboot3自帶了undertow … by[@alvinkwok1](https://github.com/alvinkwok1)in[#590](https://github.com/baomidou/dynamic-datasource/pull/590)
* feat: update-readme, format configuration yaml by[@alvinkwok1](https://github.com/alvinkwok1)in[#592](https://github.com/baomidou/dynamic-datasource/pull/592)
* perf:[@bean](https://github.com/bean)初始化優化, 以消除日志:is not eligible for getting processed by all BeanPostProcessors by[@qxo](https://github.com/qxo)in[#608](https://github.com/baomidou/dynamic-datasource/pull/608)
* chore: gitignore add virtual machine crash logs by[@qxo](https://github.com/qxo)in[#609](https://github.com/baomidou/dynamic-datasource/pull/609)
* fix(dynamic-datasource-creator):解決當存在publicKey時,druid數據源創建異常問題 by[@qq592304796](https://github.com/qq592304796)in[#605](https://github.com/baomidou/dynamic-datasource/pull/605)
* Fixes CI errors caused by Druid and Spring Framework changes by[@linghengqian](https://github.com/linghengqian)in[#613](https://github.com/baomidou/dynamic-datasource/pull/613)
# 4.2.0
* 重構druid創建過程,先合并全局參數再配置
* 支持druid動態添加的filter.
* 字符串工具類的替換。
* fix @DSTransactional 無法獲取注解屬性|統一屬性解析邏輯 by @ZPZP1
* 支持springboot3 GraalVM 超級感謝@linghengqian
* feat:增加多數據源事務同步機制 by @ZPZP1
* feat: 支持延遲移除數據源 by @alvinkwok1
# v4.1.3
* 最大加密字節數 53 ,超出最大字節數需要分組加密; 最大解密字節數 64 ,超出最大字節數需要分組解密 by[@aienuo](https://github.com/aienuo)in[#537](https://github.com/baomidou/dynamic-datasource/pull/537)
* fix druid filters init bug by[@hieastz](https://github.com/hieastz)in[#541](https://github.com/baomidou/dynamic-datasource/pull/541)
* 移除spring-boot-starter-web依賴
* fix: 事務強關聯mybatis-plus
# v4.1.2
* fix REQUIRED主事務內多個NESTED次事務不提交事務bug by[@Alan-pan](https://github.com/Alan-pan)in[#531](https://github.com/baomidou/dynamic-datasource-spring-boot-starter/pull/531)[@ZPZP1](https://github.com/ZPZP1)in[#533](https://github.com/baomidou/dynamic-datasource-spring-boot-starter/pull/533)
* fix yml參數不提示
* refactor 重構druid參數設置
* fix event沒有注入
# v4.1.1
* 修復Druid加密失敗。
# v4.1.0
* fix ArrayStoreException during parsing annotations by[@itinycheng](https://github.com/itinycheng)in[#519](https://github.com/baomidou/dynamic-datasource-spring-boot-starter/pull/519)
* fix:NoClassDefFoundError of TransactionFactory by[@ZPZP1](https://github.com/ZPZP1)in[#521](https://github.com/baomidou/dynamic-datasource-spring-boot-starter/pull/521)
* fix: NPE when add datasources from provider. by[@darknesstm](https://github.com/darknesstm)in[#525](https://github.com/baomidou/dynamic-datasource-spring-boot-starter/pull/525)
# v4.0.0 不建議
* 新增多數據源事務傳播機制 by[@zhaohaoh](https://github.com/zhaohaoh)in[#406](https://github.com/baomidou/dynamic-datasource-spring-boot-starter/pull/406)
* Migrating from Jakarta EE 9 to Jakarta EE 10 by[@linghengqian](https://github.com/linghengqian)in[#474](https://github.com/baomidou/dynamic-datasource-spring-boot-starter/pull/474)
* feat:增加適配atomikos數據源,支持同一個事務下多次切換數據源 by[@ZhiFengJia](https://github.com/ZhiFengJia)in[#481](https://github.com/baomidou/dynamic-datasource-spring-boot-starter/pull/481)
* feat:增加多數據源事務傳播屬性NESTED by @zpbaba in[#483](https://github.com/baomidou/dynamic-datasource-spring-boot-starter/pull/483)
* feat: 支持Druid DataSource timeBetweenConnectErrorMillis Config by[@xuwenping123](https://github.com/xuwenping123)in[#489](https://github.com/baomidou/dynamic-datasource-spring-boot-starter/pull/489)
* fix:fix log output information error by @zpbaba in[#501](https://github.com/baomidou/dynamic-datasource-spring-boot-starter/pull/501)
* fix:fix UUID generate blocked by @zpbaba in[#507](https://github.com/baomidou/dynamic-datasource-spring-boot-starter/pull/507)
* 修復SpringBoot 自動裝配路徑錯誤 by[@jidaojiuyou](https://github.com/jidaojiuyou)in[#510](https://github.com/baomidou/dynamic-datasource-spring-boot-starter/pull/510)
# v3.6.1 非建議版本
* 解決Druid socketTimeout 設置失敗問題
# v3.6.0 非建議版本
* 支持spirngboot3
* ?支持 Spring Boot 新版自動配置 by[@xuxiaowei-com-cn](https://github.com/xuxiaowei-com-cn)in[#454](https://github.com/baomidou/dynamic-datasource-spring-boot-starter/pull/454)
* 支持配置druid新版本socketTimeout、connectTimeout屬性 by[@Liu-YanP](https://github.com/Liu-YanP)in[#456](https://github.com/baomidou/dynamic-datasource-spring-boot-starter/pull/456)
# v3.5.2 穩定版本
* throw exception in local transaction by[@Nutao](https://github.com/Nutao)in[#426](https://github.com/baomidou/dynamic-datasource-spring-boot-starter/pull/426)
* 適用spel的#root.target by[@huaibingshifu](https://github.com/huaibingshifu)in[#427](https://github.com/baomidou/dynamic-datasource-spring-boot-starter/pull/427)
* 解決DruidConfig的stat、wall屬性使用Map接受參數了,DruidStatConfigUtil在進行反射賦值的時候會報錯 by[@Bin1993](https://github.com/Bin1993)in[#434](https://github.com/baomidou/dynamic-datasource-spring-boot-starter/pull/434)
* 讓默認的DynamicDataSourceProvider優先級為0 by[@VonXXGhost](https://github.com/VonXXGhost)in[#437](https://github.com/baomidou/dynamic-datasource-spring-boot-starter/pull/437)
* support hikaricp 原生參數
# v3.5.1
* 修復了druid設置log的filter判斷bug。
# v3.5.0
* feat:新增druid慢sql日志級別配置項 by @whcrow in https://github.com/baomidou/dynamic-datasource-spring-boot-starter/pull/402
* feat:新增本地事務對類的支持 #387 by @lonecloud in https://github.com/baomidou/dynamic-datasource-spring-boot-starter/pull/405
* feat:新增是否開啟默認DS注解選項(#396) by @lonecloud in https://github.com/baomidou/dynamic-datasource-spring-boot-starter/pull/401
* feat:新增一個event,可在數據源創建前后做自己操作。可用于自定義解密。
* feat:新增一個LocalTxUtil可手動開啟提交回滾本地事務。
* fix:修復某些情況下關閉數據源調用close失敗 by @cheese8 in https://github.com/baomidou/dynamic-datasource-spring-boot-starter/pull/391
* fix:修復 @DS優先級 #407 by @lonecloud in https://github.com/baomidou/dynamic-datasource-spring-boot-starter/pull/408
* fix:修復同時開啟p6spy和seata,p6spy不生效的問題。
* refactor: 重構creator的自動注入邏輯。
* refactor: 重構druid的各種filter的參數注入,使用map來支持任意參數。
* break:移除健康檢查(支持不好,以后考慮重寫)
* break:重構自動建表配置新增init層級。
* break: 重構策略strategy的方法為determineKey。
* 其他,注釋的完善。
## New Contributors
* @cheese8 made their first contribution in https://github.com/baomidou/dynamic-datasource-spring-boot-starter/pull/391
* @r-asou made their first contribution in https://github.com/baomidou/dynamic-datasource-spring-boot-starter/pull/392
* @lonecloud made their first contribution in https://github.com/baomidou/dynamic-datasource-spring-boot-starter/pull/401
* @whcrow made their first contribution in https://github.com/baomidou/dynamic-datasource-spring-boot-starter/pull/402
**Full Changelog**: https://github.com/baomidou/dynamic-datasource-spring-boot-starter/compare/v3.4.1...v3.5.0
# v3.4.1
- refactor: 使用反射重構了全局參數和局部參數的使用。
- refactor: 移除了關閉數據源的工具類,放回動態數據源類中。(部分用戶反饋工具類失敗)
- refactor: 默認所有creator繼承一個抽象creator處理共有邏輯。
- feat: 可單獨指定poolName了。 以前poolName和數據源名稱保持一致,現在默認一致除非指定。
- feat: 支持從繼承的接口上讀取數據源。
# v3.4.0
- fix: 修復非默認連接池創建器創建的數據源關閉失敗問題。
- fix: 修復連接池創建器創建的數據源lazy空指針問題。
- fix: 修復本地事務,使用默認數據源不加DS空指針問題。
- feat: 新增一個DynamicDataSourcePropertiesCustomizer 以支持參數擴展。
- feat: breake change,支持同時從多個來源初始化數據源。
- feat: 新增一個DynamicDatasourceNamedInterceptor 以支持手動配置切面。
# v3.3.6
- fix: 部分用戶反饋強依賴DBCP。
- feat: beecp和dbcp的創建根據反射重構。
- style: 移除沒用的stringUtils。
- style: 增加些許注釋。
# v3.3.5
- fix: 修復上個版本BeeCp判斷存在誤用HIkaricp地址的錯誤。
- feat: 新增dbcp2連接池支持。
- fix: ItemDataSource的wrap修復,獲得真實連接。
- style: 移除HIkaricp無用的配置。
# v3.3.4
- fix: 修復上個版本更改Advisor引起的數據源不能切換嚴重錯誤。
- feat: 新增beecp連接池支持。
- fix: ItemDataSource的wrap修復,獲得真實連接。
# v3.3.3 嚴重BUG版本不能使用
- feat:重要更新-Druid不用再手動排除。
- spel解析新增beanFactory。
# v3.3.2
- feat:重要更新-支持無數據源啟動,支持配置懶啟動數據源。
- refactor:重要更新-Druid不再默認啟動wall的filter。
- refactor:重要更新-DataSourceCreator移除含有publicKey的方法,由DefaultDataSourceCreator傳遞。
- refactor:DefaultDataSourceCreator獨立不繼承DataSourceCreator。
- refactor:簡化本地事務ThreadLocal。
- feat: 健康檢查優化。
- style:license format。
- chore:remove travis。
# v3.3.1
- fix: 修復打包后強制依賴seata報錯。
# v3.3.0 BUG版本不能使用
- feat:重要:本地多數據源事物支持。 @FUNKYE
- feat:底層數據源保存方式修改為ConcurrentHashMap。 @劉尚
- revert:重構底層Creator的創建規則。@劉尚
- feat:添加同名數據源覆蓋老數據源。@劉尚
- feat:支持部分從接口繼承DS的場景。@CQJames
- fix:修復Druid防火墻一個參數設置錯誤。@mrf
- fix:修復極端情況下的設置數據源異常處理。@happier233
# v3.2.1
- 提供注解查找非public方法的擴展。 @劉尚
- 修復數據源關閉的錯誤。 @zuihou
- 修復創建ItemDatasource參數錯誤。
- 修復自定義注解在方法上失效。
- 添加默認的Master和Slave注解。
- 示例項目整體遷出為獨立項目https://gitee.com/baomidou/dynamic-datasource-samples 。
# v3.2.0
- 支持通配符掃描schema文件。 @superlyao
- 支持配置driverClassName為非必須屬性。@Hccake
- 支持獨立配置每個庫的p6spy和seata的開啟狀態。
- 修復druid設置超時回收時間方法錯誤。 @liupeng
- 支持自定義注解,需繼承DS。 @liupeng
- 修復spring.aop.auto=false下不支持問題。 @劉尚
- 修復多層代理無法獲取InvocationHandler的實現類的問題。 @劉尚
- 修復mybatisPlus3下直接調用lamba方法不支持問題。 @劉尚
- seata集成優化和示例項目更新1.3.0。 @a364176773
- 調用DataSourceCreator創建的數據源會包裝成ItemDataSource,存儲原dataSource和包裝后的dataSource。
- DynamicRoutingDataSource內部關閉數據源優化。
- breakChange: 去除以前的實驗性功能,如正則切換。
- 示例項目新增quartz和sharding-jdbc的集成。
- 示例項目整體更新。
# v3.1.1
- revert: 不使用NamedInheritableThreadLocal。
- 設置默認spel解析方式為空,提供set方法可重定義解決復雜場景spel表達式問題。
- 格式化正式工程為IDEA默認格式化方案。
- 部分日志等級降低為debug。
- druid部分日志添加集成引導。
# v3.1.0 BUG版本不能使用
- 刪除數據源不允許刪除主數據源。
- 使用NamedInheritableThreadLocal。
- 增加druid參數queryTimeOut配置。
- 模塊化creator和注冊為BEAN。
# v3.0.0
- 支持 seata 分布式事務。
- creator 模塊化改造。
- 解決啟動類判斷druid自動配置沖突問題。
# v2.5.8
- spel切換下的空指針異常處理。
- pollName優先使用外部配置。
- 支持classpath開頭的schema。
- 取消自動數據源監測,后續需要手動開啟。
- 新增druid的slf4j的簡單配置。
- 支持集成seata。
- 內部模塊化的更好分層。
# v2.5.7
- 優化底層map存儲初始化大小。
- 支持數據源變化監控,基于actuator。
- 優化主從分離插件內部邏輯。
# v2.5.6
- 支持非web環境啟動。
- 支持加密自定義公鑰和全局公鑰。
- 啟動初始化數據默認分隔符改為分號 `;` 。
- google代碼格式化。
- 添加從數據庫初始加載數據源例子。
# v2.5.5
- 支持非web環境啟動。
- 支持內置加密。
- 支持啟動ddl schema和data。
# v2.5.4
- 集成druid支持配置proxyFilter。
- 修復打war包外部部署錯誤。
- 修復內置的讀寫分離插件錯誤。
- 修復關閉數據源異常。
- 修復日志打印小錯誤。
- 新增嚴格模式。
# v2.5.3
- 自定義切面支持動態解析。 https://github.com/baomidou/dynamic-datasource-spring-boot-starter/pull/29
# v2.5.2
- 解決對mp3.1.0的支持。
# v2.5.1
- 工具類新增清空本地線程的方法。
- 優化對p6spy的支持。
- 新增在Mybatis環境下的純讀寫分離插件,無需注解。
- 新增關閉數據源的destroy方法。
- 完善druid的wall和stat的配置支持。
# v2.5.0
- 修復數據源啟動說明錯誤。
- 修復負載均衡策略切換隱藏bug。
- 底層更換為ArrayDeque。
- 重構動態處理器。
# v2.4.2
- 引入了實驗性的功能: 根據正則或spel來自動匹配數據源。
# v2.4.1
- 修復了上個版本hikari不兼容1.5.x的BUG。
- 提供了hikari全局屬性的配置。
# v2.4.0
- 重構了druid配置。
- 支持了更多druid參數配置,支持了加密。
- 完善了文檔。
# v2.3.6
- 修復上個版本的druid參數設置bug。
- 對外開放獲取所有數據源和所有組數據源方法。
# v2.3.5 druid參數設置有bug
- 支持p6sy。(格式化sql利器)
- 支持jndi數據源。
- 支持druid更多參數。
- 支持hikari參數設置。
- 切換數據源工具類只有在clear的時候才移除當前數據源名稱。
- 啟動帶上數據源名稱。
- 添加了更多的測試代碼。
# v2.3.4
- 底層細節優化。
- 重構多級數據源切換。
- 示例項目重構。
# v2.3.3 BUG版本不能使用
- 支持嵌套下多級的數據源切換(service1 mysql調用service2 oracle)。
https://gitee.com/baomidou/dynamic-datasource-spring-boot-starter/issues/IO33C
- 修復spel對request和session的支持。
# v2.3.2 BUG版本不能使用
- 修復在不需要session的場景中自動注入session。
# v2.3.1 BUG版本不能使用
- 修復2.3.0中使用spel session 和header的取值錯誤。
# v.2.3.0
- 重構創建數據源類。廢棄DataSourceFactory,改為Bean的DynamicDataSourceCreator。
- 自動適配mybatisPlus,移除參數的mp-enabled。
- 新特性支持spel參數獲取數據源。
# v2.2.3
- 支持druid參數全局配置。
- 對外暴露動態添加刪除數據源的方法。
- 增加在組內數據源為空時使用默認數據源。
- 去除啟動時校驗組內只有單個數據源。
# v2.2.2 BUG版本不能使用
- 修復上個版本mp3適配失敗的Bug。
# v2.2.1
- 適配mybatis2.x版本。
# v2.2.0
- 修復從默認數據源獲取數據不能是組數據源的bug。
- 摒棄spring原生動態數據源抽象,重新實現。
- 去除底層方法緩存。
- 提供從JDBC中獲取數據源的抽象。
- 部分代碼重新劃分包。
- license的組織名更新成為baomidou。
# v2.1.1
- 切面順序調整為最高。
- 底層切換數據源邏輯優化。
# v2.1.0
- 修復了底層一個邏輯bug。
- 提供了對mp的原生支持。
- 底層代碼進行了細微的性能優化。
# v2.0.2
- 修復springboot2.0以上版本不能設置HikariDataSource。
- 底層代碼的整理。
- Druid數據源初始大小改為3。
# v2.0.1
- 修復一個方法緩存的bug,會引起同名方法的注解失效。
- 底層代碼的重命名和部分格式的調整。
# v2.0.0
- Breaking change:數據源配置同級,不再默認主從,支持多種方案。
- Breaking change:使用約定大于配置,開啟 多組模式 新啟程。
- Breaking change:注解包路徑變更,與苞米豆其他項目保持一致寫法。
- Breaking change:不再支持@DS空注解。
- Breaking change:不再支持強制主庫force-master配置。
- Breaking change:數據源選擇策略現在如需更改需要設置配置文件的dynamicDataSourceStrategyClass。
- Druid數據源默認validation-query 為select 1 。
- 全部源碼改為中文。
- 增加了部分啟動時和運行中的日志。
# v1.4.0
- 支持了在類上注解,如果方法上同時有注解則方法注解優先。
- 支持了遇到事物強制主庫,并且是默認行為,可在配置更改foeceMaster。
- 最低支持jdk1.7,springboot1.4.x。
- 重構aop,解決了部分springboot版本引入插件無效的問題。
# v1.3.0
- 對Druid的paCache屬性提供支持。
- 還原上一版本切面的配置方式。
- 其他一些細節的優化。
# v1.2.0
- 對Druid提供更完善的支持。
- 更改了默認的注解切面的注入方式。
- 抽象了切面選擇數據源接口,方便以后支持spel語法等。
# v1.1.0
- 支持Druid數據源 (support DruidDataSource)。
- 付費用戶必讀
- 必讀必讀
- 專屬QQ群
- 基礎必讀(免費)
- DS詳細解析
- 連接池集成
- 連接池必讀
- 集成Druid
- 集成HikariCP
- 集成BeeCP
- 集成DBCP2
- 集成Jndi
- 第三方集成
- 集成MybatisPlus
- 集成P6spy
- 集成Quartz
- 集成ShardingJdbc
- 進階使用
- 動態添加移除數據源
- 動態解析數據源
- 數據庫加密
- 啟動初始化執行腳本
- 懶啟動數據源
- 無數據源啟動
- 手動切換數據源
- 手動注入多數據源
- 自定義
- 自定義注解
- 自定義數據源來源
- 自定義負載均衡策略
- 無注解方案
- 無注解必讀
- filter切換
- intercepror切換
- AOP切面切換
- mybatis下讀寫分離
- 事務專欄
- 事務概念
- 基礎知識
- 本地事務
- seata事務
- 事務常見問題
- 調試源碼
- 常見問題之-切換數據源失敗
- 不可用版本(免費)
- 版本記錄和選擇建議(免費)
- 知識庫
- 多租戶最佳實踐