Spring數(shù)據(jù)庫多數(shù)據(jù)源路由配置過程圖解
項目中需要根據(jù)不同業(yè)務進行分庫,首先是將業(yè)務不同業(yè)務映射到不同過的數(shù)據(jù)庫( biz --> db,可能存在多對一情況),
查看springjdbc源碼發(fā)現(xiàn)AbstractRoutingDataSource類作為一個數(shù)據(jù)源路由抽象類,可以擔當這個事情,其設計思想也比較簡單,
首先將多個數(shù)據(jù)源的映射關(guān)系自己維護完成后注入進來,然后自己定義一個路由規(guī)則,重點部分見代碼:
首先可以看到該類是一個抽象類,重點關(guān)注變量targetDataSource和resolvedDataSources.
其中targetDataSource用于將用戶建立的映射關(guān)系注入進來,可以通過如下方法
resolvedDataSources用于真正存儲依賴關(guān)系,targetDataSource僅僅是個中介,解析代碼見下圖
核心路由方法:
是不是很清楚,首先獲取數(shù)據(jù)源映射key,然后通過key獲取數(shù)據(jù)源
數(shù)據(jù)源映射獲取方法為抽象方法,見下圖:
實現(xiàn)時需要注意線程安全,最佳實現(xiàn)時通過ThreadLocal將在dbsql執(zhí)行前將key設置進去,以便后來獲取這個key,
調(diào)用入口:
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
- SpringBoot項目application.yml文件數(shù)據(jù)庫配置密碼加密的方法
- Spring Security使用數(shù)據(jù)庫認證及用戶密碼加密和解密功能
- SpringBoot2 整合 ClickHouse數(shù)據(jù)庫案例解析
- SpringBoot配置文件中數(shù)據(jù)庫密碼加密兩種方案(推薦)
- SpringBoot整合Druid數(shù)據(jù)源過程詳解
- springboot 多數(shù)據(jù)源的實現(xiàn)(最簡單的整合方式)
- SpringMVC Mybatis配置多個數(shù)據(jù)源并切換代碼詳解
- SpringBoot如何在運行時動態(tài)添加數(shù)據(jù)源
相關(guān)文章
使用Spirng Boot Admin監(jiān)控Spring Cloud應用項目
這篇文章主要介紹了使用Spirng Boot Admin監(jiān)控Spring Cloud應用項目,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-05-05java、python、JavaScript以及jquery循環(huán)語句的區(qū)別
本篇文章主要介紹java、python、JavaScript以及jquery的循環(huán)語句的區(qū)別,這里整理了它們循環(huán)語句語法跟示例,以便大家閱讀,更好的區(qū)分它們的不同2016-07-07Spring實戰(zhàn)之ServletContextResource訪問資源文件示例
這篇文章主要介紹了Spring實戰(zhàn)之ServletContextResource訪問資源文件,結(jié)合實例形式分析了spring使用ServletContextResource讀取與遍歷資源文件相關(guān)操作技巧,需要的朋友可以參考下2019-12-12Springboot調(diào)整接口響應返回時長詳解(解決響應超時問題)
當后端對于數(shù)據(jù)量較大的處理或是某些耗時的操作時,需要先對請求接口的請求進行響應,下面這篇文章主要給大家介紹了關(guān)于Springboot調(diào)整接口響應返回時長(解決響應超時問題)的相關(guān)資料,需要的朋友可以參考下2023-01-01SpringMVC核心DispatcherServlet處理流程分步詳解
這篇文章主要介紹了SpringMVC核心之中央調(diào)度器DispatcherServlet的相關(guān)知識,包括SpringMVC請求處理過程及SrpingMVC容器和spring IOC容器關(guān)系,需要的朋友可以參考下2023-04-04解決Springboot獲取不到nacos配置中心的配置問題
由于項目使用的nacos老版本,存在風險bug, 需要將nacos升級至2.2.1及以上版本,版本升級完畢之后 啟動項目發(fā)現(xiàn)項目開始報錯,所以本文記錄一下Springboot獲取不到nacos配置中心的配置問題,文中有詳細的解決方法,需要的朋友可以參考下2023-09-09