久久r热视频,国产午夜精品一区二区三区视频,亚洲精品自拍偷拍,欧美日韩精品二区

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

Spring數(shù)據(jù)庫(kù)多數(shù)據(jù)源路由配置過(guò)程圖解

瀏覽:44日期:2023-08-30 16:56:37

項(xiàng)目中需要根據(jù)不同業(yè)務(wù)進(jìn)行分庫(kù),首先是將業(yè)務(wù)不同業(yè)務(wù)映射到不同過(guò)的數(shù)據(jù)庫(kù)( biz --> db,可能存在多對(duì)一情況),

查看springjdbc源碼發(fā)現(xiàn)AbstractRoutingDataSource類作為一個(gè)數(shù)據(jù)源路由抽象類,可以擔(dān)當(dāng)這個(gè)事情,其設(shè)計(jì)思想也比較簡(jiǎn)單,

首先將多個(gè)數(shù)據(jù)源的映射關(guān)系自己維護(hù)完成后注入進(jìn)來(lái),然后自己定義一個(gè)路由規(guī)則,重點(diǎn)部分見(jiàn)代碼:

Spring數(shù)據(jù)庫(kù)多數(shù)據(jù)源路由配置過(guò)程圖解

首先可以看到該類是一個(gè)抽象類,重點(diǎn)關(guān)注變量targetDataSource和resolvedDataSources.

其中targetDataSource用于將用戶建立的映射關(guān)系注入進(jìn)來(lái),可以通過(guò)如下方法

Spring數(shù)據(jù)庫(kù)多數(shù)據(jù)源路由配置過(guò)程圖解

resolvedDataSources用于真正存儲(chǔ)依賴關(guān)系,targetDataSource僅僅是個(gè)中介,解析代碼見(jiàn)下圖

Spring數(shù)據(jù)庫(kù)多數(shù)據(jù)源路由配置過(guò)程圖解

核心路由方法:

Spring數(shù)據(jù)庫(kù)多數(shù)據(jù)源路由配置過(guò)程圖解

是不是很清楚,首先獲取數(shù)據(jù)源映射key,然后通過(guò)key獲取數(shù)據(jù)源

數(shù)據(jù)源映射獲取方法為抽象方法,見(jiàn)下圖:

Spring數(shù)據(jù)庫(kù)多數(shù)據(jù)源路由配置過(guò)程圖解

實(shí)現(xiàn)時(shí)需要注意線程安全,最佳實(shí)現(xiàn)時(shí)通過(guò)ThreadLocal將在dbsql執(zhí)行前將key設(shè)置進(jìn)去,以便后來(lái)獲取這個(gè)key,

調(diào)用入口:

Spring數(shù)據(jù)庫(kù)多數(shù)據(jù)源路由配置過(guò)程圖解

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: Spring
相關(guān)文章:
主站蜘蛛池模板: 雷州市| 盐津县| 宝应县| 长乐市| 淮滨县| 佛冈县| 蓝山县| 兰考县| 耿马| 涿鹿县| 巫溪县| 汉川市| 锡林郭勒盟| 全州县| 娄烦县| 井研县| 和林格尔县| 乌拉特后旗| 平顺县| 宁波市| 徐闻县| 天峨县| 松溪县| 惠水县| 福泉市| 广河县| 达孜县| 金昌市| 特克斯县| 邵武市| 枞阳县| 宁波市| 香河县| 芜湖市| 阳山县| 鞍山市| 迁西县| 阳东县| 颍上县| 土默特左旗| 迭部县|