springboot配置oracle+達夢數據庫多數據源配置并動態切換

項目場景:

在工作中很多情況需要跨數據庫進行數據操作,自己總結的經驗希望對各位有所幫助


問題描述

總結了幾個問題

1.識別不到mapper

2.識別不到xml

3.找不到數據源


原因分析:

1.配置文件編寫導致識別mapper

2.配置類編寫建的格式有問題

3.命名問題大小寫


解決方案:

1.檢查application配置文件的掃描是否開啟路徑是否正確

2.檢查配置文件的拼寫縮進,application的拼寫縮進特別嚴格建議自己寫不要粘貼復制

3.命名大小寫或者多字母少字母導致找不到

配置相關代碼:

在config新建幾個數據配置文件用于訪問和切換數據源

DatasourceConfig類

這里是通過

ConfigurationProperties注解獲取映射你application的數據源名稱這里不要寫錯一定注意

然后交給bean管理;

下面的

dynamicDataSource是調用spring自帶的一個的抽象類用于切換數據源使用的
@Bean("db1")
@ConfigurationProperties(prefix = "spring.datasource.db1")
public DataSource dataSourceOne(){return DataSourceBuilder.create().build();
}
@Bean("db2")
@ConfigurationProperties(prefix = "spring.datasource.db2")
public DataSource dataSourceTwo(){return DataSourceBuilder.create().build();
}
@Bean(name = "dynamicDataSource")
@Primary
public DataSource dynamicDataSource(@Qualifier("db1") DataSource db1,@Qualifier("db2") DataSource db2){DynamicDataSource dynamicDataSource = new DynamicDataSource();dynamicDataSource.setDefaultTargetDataSource(db1);HashMap<Object, Object> dsMap = new HashMap<>();dsMap.put("db1",db1);dsMap.put("db2",db2);dynamicDataSource.setTargetDataSources(dsMap);return dynamicDataSource;
}
@Bean
public PlatformTransactionManager transactionManager(@Qualifier("dynamicDataSource") DataSource dynamicDataSource){return new DataSourceTransactionManager(dynamicDataSource);
}
DynamicDataSource類

determineCurrentLookupKey用來指定數據源這里獲取到傳過來的名稱聯合DataSourceUtil進行指定使用哪個數據源

@Slf4j
public class DynamicDataSource extends AbstractRoutingDataSource {@Overrideprotected Object determineCurrentLookupKey() {log.info("動態數據源獲取--{}", DataSourceUtil.getDB());return DataSourceUtil.getDB();}
}

public class DataSourceUtil {private static final ThreadLocal<String> contextHolder = new ThreadLocal<>();public static void setDB(String dbType){contextHolder.set(dbType);}public static String getDB(){return  contextHolder.get();}public static void clearDB(){contextHolder.remove();}
}

最后的 這里定義一個事務管理器PlatformTransactionManager 通過

@Qualifier注解將切換數據源的配置類進行注入

然后是調用?DataSourceUtil

DataSourceUtil 類是基于 ThreadLocal 實現的,用于動態管理數據源的標識,整體代碼簡潔且符合常見的動態數據源切換需求,使用?ThreadLocal?實現線程上下文綁定,用于存儲和管理當前線程的數據源標識,setDB就是寫入設置綁定數據源標識,這里的名字必須和配置文件的名字對應上基本就可以實現切換數據原了

這里是配置文件的寫法注意縮寫和依賴包導入這里我就不多贅述了

spring:datasource:db1:driver-class-name: dm.jdbc.driver.DmDriverjdbc-url: jdbc:dm://123456789:5524/CCS_HBusername: CCSpassword: CCS.db2:enabled: truedriver-class-name: oracle.jdbc.OracleDriverjdbc-url: jdbc:oracle:thin:@//123456789:1521/hbfspdbusername: userpassword: user

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

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

相關文章

html+css+js網頁設計 美食 家美食1個頁面

htmlcssjs網頁設計 美食 家美食1個頁面 網頁作品代碼簡單&#xff0c;可使用任意HTML輯軟件&#xff08;如&#xff1a;Dreamweaver、HBuilder、Vscode 、Sublime 、Webstorm、Text 、Notepad 等任意html編輯軟件進行運行及修改編輯等操作&#xff09;。 獲取源碼 1&#xf…

【機器學習】【樸素貝葉斯分類器】從理論到實踐:樸素貝葉斯分類器在垃圾短信過濾中的應用

&#x1f31f; 關于我 &#x1f31f; 大家好呀&#xff01;&#x1f44b; 我是一名大三在讀學生&#xff0c;目前對人工智能領域充滿了濃厚的興趣&#xff0c;尤其是機器學習、深度學習和自然語言處理這些酷炫的技術&#xff01;&#x1f916;&#x1f4bb; 平時我喜歡動手做實…

Vue使用Tinymce 編輯器

目錄 一、下載并重新組織tinymce結構二、使用三、遇到的坑 一、下載并重新組織tinymce結構 下載 npm install tinymce^7 or yarn add tinymce^7重構目錄 在node_moudles里找到tinymce文件夾&#xff0c;把里面文件拷貝一份放到public下&#xff0c;如下&#xff1a; -- pub…

odoo中@api.model, @api.depends和@api.onchange 裝飾器的區別

文章目錄 1. api.model用途特點示例 2. api.depends用途特點示例 3. api.onchange用途特點示例 總結 在 Odoo 中&#xff0c;裝飾器&#xff08;decorators&#xff09;用于修飾方法&#xff0c;以指定它們的行為和觸發條件。api.model、api.depends 和 api.onchange 是三個常用…

EMNLP'24 最佳論文解讀 | 大語言模型的預訓練數據檢測:基于散度的校準方法

點擊藍字 關注我們 AI TIME歡迎每一位AI愛好者的加入&#xff01; 點擊 閱讀原文 觀看作者講解回放&#xff01; 作者簡介 張偉超&#xff0c;中國科學院計算所網絡數據科學與技術重點實驗室三年級直博生 內容簡介 近年來&#xff0c;大語言模型&#xff08;LLMs&#xff09;的…

大數據技術-Hadoop(一)Hadoop集群的安裝與配置

目錄 一、準備工作 1、安裝jdk&#xff08;每個節點都執行&#xff09; 2、修改主機配置 &#xff08;每個節點都執行&#xff09; 3、配置ssh無密登錄 &#xff08;每個節點都執行&#xff09; 二、安裝Hadoop&#xff08;每個節點都執行&#xff09; 三、集群啟動配置&a…

PilotGo

title: 解鎖 PilotGo&#xff1a;智能化運維的得力助手 date: ‘2024-12-29’ category: blog tags: PilotGo運維管理智能化工具技術應用 sig: ops archives: ‘2024-12’ author:way_back summary: PilotGo 作為一款創新的運維管理工具&#xff0c;憑借其智能化的特性和豐富的…

折騰日記:如何讓吃灰筆記本發揮余熱——搭建一個相冊服務

背景 之前寫過&#xff0c;我在家里用了一臺舊的工作站筆記本做了服務器&#xff0c;連上一個綠聯的5位硬盤盒實現簡單的網盤功能&#xff0c;然而&#xff0c;還是覺的不太理想&#xff0c;比如使用filebrowser雖然可以備份文件和圖片&#xff0c;當使用手機使用網頁&#xf…

使用seata實現分布式事務管理

配置 版本說明&#xff1a;springCloud Alibaba組件版本關系 我用的是spring cloud Alibaba 2.2.1.RELEASE 、springboot 2.2.1.RELEASE、nacos 2.0.1、seata1.2.0,jdk1.8 seata 主要用于在分布式系統中對數據庫進行事務回滾&#xff0c;保證全局事務的一致性。 seata的使用…

【總結】動態規劃

線性dp LeetCode題單&#xff0c; 從記憶化搜索到遞推 Pre&#xff1a; 從最初狀態到最終狀態等價&#xff0c;那么從最終狀態開始和最初狀態開始結果一樣。 遞歸時不會產生其他負面結果&#xff0c;即無論何時進入遞歸&#xff0c;只要遞歸參數相同&#xff0c;結果就相同。 …

RabbitMQ中的異步Confirm模式:提升消息可靠性的利器

在現代分布式系統中&#xff0c;消息隊列&#xff08;Message Queue&#xff09;扮演著至關重要的角色&#xff0c;它能夠解耦系統組件、提高系統的可擴展性和可靠性。RabbitMQ作為一款廣泛使用的消息隊列中間件&#xff0c;提供了多種機制來確保消息的可靠傳遞。其中&#xff…

買賣預測工具

設計一個用于在交易市場中尋找確定性或大概率盈利的買賣預測工具是一個具有挑戰性但非常有潛力的項目。你可以通過以下幾個步驟進行思路規劃&#xff1a; 1. 明確目標 大概率盈利&#xff1a;工具的目的是找出大概率盈利的交易機會。不能完全依賴于100%確定性&#xff0c;因為…

【數據結構】數據結構簡要介紹

數據結構是計算機科學中用于組織、管理和存儲數據的方式&#xff0c;以便于高效地訪問和修改數據。 數據結構的分類&#xff1a; 數據結構可以大致分為兩類&#xff1a;線性結構和非線性結構。 1. 線性結構 線性結構中的數據按順序排列&#xff0c;每個元素有唯一的前驅和后…

note 41:賬務系統開發規范

目錄 系統設計 防重控制 流量控制 并發控制 異常處理 備份機制 系統開發??????? 前端隊列操作 外系統交互 ?????????????? 系統設計 防重控制 對于進入到系統中的數據&#xff08;文件導入、手工錄入、系統直連等&#xff09;以及本系統發往外…

Circular Spanning Tree(樹的性質)

Circular Spanning Tree 本道題目加深理解樹的性質&#xff1a; 思路&#xff1a; 首先考慮什么情況是NO&#xff0c;那么不難想當字符串全是0的時候一定是不行的&#xff0c;因為這樣就構成環了&#xff0c;還有一種情況是1的個數為奇數的時候是不行的&#xff0c;一棵樹中為…

linux安裝nginxs報錯:openssl not found

系統&#xff1a; linux 版本&#xff1a;centOS7 nginx版本&#xff1a;nginx-1.20.2 linux安裝nginx時 執行下面命令時報錯&#xff1a; ./configure --with-http_stub_status_module --with-http_ssl_module --prefix/usr/local/nginxchecking for OpenSSL library ... not …

【論文筆記】Contrastive Learning for Sign Language Recognition and Translation

&#x1f34e;個人主頁&#xff1a;小嗷犬的個人主頁 &#x1f34a;個人網站&#xff1a;小嗷犬的技術小站 &#x1f96d;個人信條&#xff1a;為天地立心&#xff0c;為生民立命&#xff0c;為往圣繼絕學&#xff0c;為萬世開太平。 基本信息 標題: Contrastive Learning for…

docker redis安裝

一.鏡像拉取 docker pull redis:5.0新建文件 touch /home/redis/redis.conf touch /home/redis/redis_6379.pid # bind 192.168.1.100 10.0.0.1 # bind 127.0.0.1 ::1 #bind 127.0.0.1protected-mode noport 6379tcp-backlog 511requirepass roottimeout 0tcp-keepali…

【CSS in Depth 2 精譯_096】16.4:CSS 中的三維變換 + 16.5:本章小結

當前內容所在位置&#xff08;可進入專欄查看其他譯好的章節內容&#xff09; 第五部分 添加動效 ??【第 16 章 變換】 ?? 16.1 旋轉、平移、縮放與傾斜 16.1.1 變換原點的更改16.1.2 多重變換的設置16.1.3 單個變換屬性的設置 16.2 變換在動效中的應用 16.2.1 放大圖標&am…

小程序租賃系統開發的優勢與實踐探索

內容概要 小程序租賃系統開發正在引起廣泛關注&#xff0c;特別是在數字化快速發展的今天。很多企業開始意識到&#xff0c;小程序不僅能為他們帶來更多的客戶&#xff0c;還能極大地提高管理效率。借助小程序&#xff0c;用戶在租賃時可以更加方便地瀏覽和選擇產品&#xff0…