springboot根據租戶id動態指定數據源

代碼地址

碼云地址springboot根據租戶id動態指定數據源: springboot根據租戶id指定動態數據源,結合mybatis+mysql+多數源下的事務管理

創建3個數據庫和對應的表

sql腳本在下圖位置

代碼的執行順序

  1. 先設置主數據庫的數據源
  2. 配置目標數據源和默認數據源
  3. 有了主庫的數據源,才能讀取主數據庫配置的所有數據源,重新初始化數據源并放入ioc容器中
  4. 在訪問service方法之前,先攔截到aop中,把請求頭中的租戶id,放入本地線程上下文中
  5. 在調用mapper接口的時候,跳轉到自定義的數據源對應的determineCurrentLookupKey() 方法中,動態切換租戶id下的數據源
  6. 拿到結果打印

aa方法,在header頭中輸入對應的租戶id

?可以看到對應的租戶01對應的數據庫下的表的數據 打印出來了

輸入租戶02,可以看到租戶02對應數據庫下的表的數據打印出來了

?

執行addBiao方法,輸入對應的租戶id

?可以看到租戶2的數據庫中,王五并沒有被插入,說明多數據源下的事務生效了,已經回滾數據了

注意?

aop的執行順序,一定要比事務管理器的順序要優先,否則事務不會生效

如果不設置Order注解,那么事務就不會拿到,DataSourceContextHolder設置的上下文中的租戶id

到了動態數據源的方法中,就會獲取數據源為null,也就是lookupKey為null

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/63786.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/63786.shtml
英文地址,請注明出處:http://en.pswp.cn/web/63786.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

C++簡明教程(文章要求學過一點C語言)(3)

一、編程工具大揭秘——IDE 當我們準備踏入 C 編程的奇妙世界時,首先要認識一個重要的“魔法盒子”——集成開發環境(IDE)。IDE 就像是一個全能的編程工作室,它把我們寫代碼所需要的各種工具都整合到了一起,讓編程這件…

達夢官方工具 SQLark數據遷移(oracle->達夢數據庫)

應國產化需求需要,需將系統中涉及的各中間件替換成國產中間件,此文介紹了從Oracle遷移數據至達夢dm8的步驟,該文在windos環境下已驗證測試過 1 SQLark介紹 SQLark是一款專為信創應用開發者設計的數據庫開發和管理工具。它支持快速查詢、創建和管理多種類型的數據庫系統&#xf…

【JAVA】JAVA接口公共返回體ResponseData封裝

一、JAVA接口公共返回體ResponseData封裝&#xff0c;使用泛型的經典 例子 public class ResponseData<T> implements Serializable { /** * */ private static final long serialVersionUID 7098362967623367826L; /** * 響應狀態碼 */ …

AlipayHK支付寶HK接入-商戶收款(PHP)

一打開支付寶國際版 二、點開商戶服務 三、下載源碼

【Prompt Engineering】6 文本擴展

一、引言 文本擴展&#xff1a;將短文本輸入到大型語言模型中&#xff0c;生成更長的文本。應用場景&#xff1a;頭腦風暴、生成電子郵件或論文等。風險&#xff1a;可能被用于生成垃圾郵件。使用原則&#xff1a;負責任地使用&#xff0c;確保有益于人們。技術準備&#xff1…

nginx學習總結(不包含安裝過程)

1. nginx常見配置 http服務上支持【若干虛擬主機】。每個虛擬主機對應一個server配置項&#xff0c;配置項里面包含該虛擬主機相關的配置。 server{listen 80 default;server_name www.yonqin.com;index index.html index.htm index.php;root /data/www;location ~ .*\.(gif|…

CSS系列(29)-- Scroll Snap詳解

前端技術探索系列&#xff1a;CSS Scroll Snap詳解 &#x1f4dc; 致讀者&#xff1a;探索流暢滾動體驗 &#x1f44b; 前端開發者們&#xff0c; 今天我們將深入探討 CSS Scroll Snap&#xff0c;這個強大的滾動優化特性。 基礎特性 &#x1f680; 容器設置 /* 基礎滾動…

如何設計高效的商品系統并提升擴展性:從架構到實踐的全方位探索

在現代電商、零售及企業資源管理系統中&#xff0c;商品管理無疑是核心模塊之一。隨著市場的變化與企業規模的擴展&#xff0c;商品系統需要具備強大的功能支持以及高效的擴展能力&#xff0c;以應對日益復雜的業務需求。一個設計良好的商品系統不僅僅是一個商品信息的容器&…

RFdiffusion get_torsions函數解讀

函數功能 get_torsions 函數根據輸入的原子坐標(xyz_in)和氨基酸序列(seq),計算一組主鏈和側鏈的扭轉角(torsions)。同時生成備用扭轉角(torsions_alt),用于表示可以鏡像翻轉的幾何結構,并返回掩碼(tors_mask)和是否平面化(tors_planar)的信息。 輸入參數 xyz…

docker springboot 運維部署詳細實例

環境安裝 [rootiZbp1dcnzq7pzpg9607m6pZ ~]# docker -v Docker version 26.1.4, build 5650f9b鏡像構建 Dockerfile 文件內容 FROM openjdk:8 # Author Info 創建人信息 MAINTAINER ratelcloudfoxmail.com ENV PORT20001 EXPOSE 20001 RUN mkdir /usr/local/ratel-boot-serv…

貪心算法在背包問題上的運用(Python)

背包問題 有n個物品,它們有各自的體積和價值,現有給定容量的背包,如何讓背包里裝入的物品具有最大的價值總和? 這就是典型的背包問題(又稱為0-1背包問題),也是具體的、沒有經過任何延伸的背包問題模型。 背包問題的傳統求解方法較為復雜,現定義有一個可以載重為8kg的背…

【ArcGIS Pro微課1000例】0063:處理無人機數據(空三、生成DOM、DSM、DTM)

使用ArcGIS Pro 正射拼接處理無人機數據流程化工具,不需要額外產品許可的支持,只需要桌面是高級版許可即可支持。ArcGIS Pro處理無人機攝影測量數據主要內容有:空三、生成DOM、DSM、DTM。 文章目錄 一、創建映射項目二、提交自由空三三、添加控制點優化四、提交產品生產一、…

解鎖 Jenkins 搭建全攻略

一、Jenkins 簡介 &#xff08;一&#xff09;簡述 Jenkins 的作用與價值 Jenkins 是一款在軟件開發領域備受矚目的開源軟件項目&#xff0c;它基于 Java 開發&#xff0c;是極為重要的持續集成工具。在軟件開發的整個流程中&#xff0c;Jenkins 發揮著關鍵作用&#xff0c;能…

人工智能ACA(四)--機器學習基礎

零、參考資料 一篇文章完全搞懂正則化&#xff08;Regularization&#xff09;-CSDN博客 一、 機器學習概述 0. 機器學習的層次結構 學習范式&#xff08;最高層&#xff09; 怎么學 監督學習 無監督學習 半監督學習 強化學習 學習任務&#xff08;中間層&#xff0…

豆包MarsCode:小U的數字插入問題

問題描述 問題分析 問題的核心是找到將數字 b 插入到數字 a 的某個位置后&#xff0c;使形成的數字盡可能大。需要仔細分析以下幾個要點&#xff1a; 1. 分析數字的特性 輸入的兩個數字&#xff1a; a 是一個正整數&#xff08;例如 76543&#xff09;。b 是一個非負整數&am…

雅思真題短語梳理(八)

126員工流動率高 high staff turnover 127(多)負擔一些工作任務 cover some duties / an increased workload 128不滿 feel upset and resentful 129偏向性待遇 preferential treatment 130介入幫忙 step in and help 131切實的好處 tangible benefits 132挽留 staff retention…

【Cadence射頻仿真學習筆記】IC設計中電感的分析、建模與繪制(EMX電磁仿真,RFIC-GPT生成無源器件及與cadence的交互)

一、理論講解 1. 電感設計的兩個角度 電感的設計可以從兩個角度考慮&#xff0c;一個是外部特性&#xff0c;一個是內部特性。外部特性就是把電感視為一個黑盒子&#xff0c;帶有兩個端子&#xff0c;如果帶有抽頭的電感就有三個端子&#xff0c;需要去考慮其電感值、Q值和自…

基礎元器件的學習

1、二極管 1.1二極管的符號 ZD是穩壓二極管 VD、V、D是普通二極管的符號。 1.2二極管的反向恢復時間 首先交流電為上正下負&#xff0c;然后下正上負。當二極管接到反向電壓&#xff0c;二極管存在寄生電容&#xff0c;電壓不能立刻突變&#xff0c;當輸入頻率變高時&#…

EdgeX物聯網平臺

一、概述 EdgeX Foundry是一個由Linux基金會支持的邊緣計算開源平臺。它的定位是作為通用工業物聯網邊緣計算通用框架,部署在路由器和交換機等邊緣設備上。EdgeX Foundry為各種傳感器、設備或其他物聯網器件提供即插即用功能,并管理它們,進一步收集和分析它們的數據,或者導…

基于小樣本學習的自然場景圖像中茶葉病害識別技術綜述

基于小樣本學習的自然場景圖像中茶葉病害識別技術綜述 引言 茶葉作為全球廣泛消費的飲品之一&#xff0c;其產量和品質直接關系到茶農的經濟收益。然而&#xff0c;茶樹在生長過程中容易受到多種病害的侵染&#xff0c;這些病害不僅影響茶葉的產量和品質&#xff0c;還給茶農…