spring3:多數據源配置使用

来源:http://www.cnblogs.com/niejianqiang/archive/2017/11/17/7849833.html
-Advertisement-
Play Games

0. properties ####################################mysql########################################### db.mysql.driverClassName=com.mysql.jdbc.Driver db.m ...


0. properties

####################################mysql###########################################
db.mysql.driverClassName=com.mysql.jdbc.Driver
db.mysql.url=jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=UTF-8
db.mysql.username=test
db.mysql.password=test
####################################postgresql###########################################
db.postgresql.driverClassName=org.postgresql.Driver
db.postgresql.url=jdbc:postgresql://127.0.0.1:5432/test
db.postgresql.username=postgres
db.postgresql.password=hp242g2
View Code

1. mysql配置

配置文件:datasources.xml

1 <bean id="dataSource1" class="com.mysql.jdbc.jdbc2.optional.MysqlDataSource">
2         <property name="url" value="${db.mysql.url}" />
3         <property name="user" value="${db.mysql.username}" />
4         <property name="password" value="${db.mysql.password}" />
5     </bean>
View Code

2. postgresql(postgres)配置

1 <bean id="dataSourcePostgresql1" class="org.postgresql.ds.PGSimpleDataSource">
2         <property name="url" value="${db.postgresql.url}" />
3         <property name="user" value="${db.postgresql.username}" />
4         <property name="password" value="${db.postgresql.password}" />
5         <property name="serverName" value="127.0.0.1" />
6         <property name="portNumber" value="5432" />
7         <property name="databaseName" value="test" />
8     </bean>
View Code

3. spring配置

 1 <bean id="multipleDataSource" class="org.bighead.common.util.MultipleDataSource">
 2         <property name="defaultTargetDataSource" ref="dataSource1" />
 3         <property name="targetDataSources">
 4             <map key-type="java.lang.String">
 5                 <entry key="oracle1" value-ref="dataSource1" />
 6                 <entry key="postgresql1" value-ref="dataSourcePostgresql1" />
 7             </map>
 8         </property>
 9         <property name="lenientFallback" value="true"/>
10     </bean>
View Code

4. org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource繼承

package org.bighead.common.util;

import org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource;

public class MultipleDataSource extends AbstractRoutingDataSource{
	
	private static final ThreadLocal<String> threadLocal = new InheritableThreadLocal<String>();
	
	@Override
	protected Object determineCurrentLookupKey() {
		return threadLocal.get();
	}
	
	public static void setDataSourceKey(String dataSource) {
		threadLocal.set(dataSource);
    }
}

5. 應用

package org.bighead.test;

import java.sql.Connection;
import java.sql.SQLException;

import org.bighead.common.util.MultipleDataSource;
import org.springframework.context.support.AbstractApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class TestTest {

	public static void main(String[] args) {
		String[] configs = {"config/spring-application-datasources.xml"};
		AbstractApplicationContext appCont = new ClassPathXmlApplicationContext(configs);
		MultipleDataSource multipleDataSource = (MultipleDataSource) appCont.getBean("multipleDataSource");
			try {
				MultipleDataSource.setDataSourceKey("postgresql1");
				Connection connection = multipleDataSource.getConnection();
				
				System.out.println(connection);
			} catch (SQLException e) {
				e.printStackTrace();
			}
	}
}

6. 備註

多資料庫連接池問題,後續更新

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • Redhat6.5 1、準備工作 卸載使用rpm包安裝的mysql-server、mysql軟體包 安裝自帶的ncurses-devel包 rpm -ivh /mnt/Packages/ncurses-devel-5.7-3.20090208.el6.x86_64.rpm ① 解壓cmake包 ta ...
  • 準備兩台設備,以我的為例一臺source ip:192.168.3.66和一臺duplicate ip:192.168.3.77 1》基於備份集複製資料庫,目錄結構都一樣(active database網路) 1.在duplicate端檢查有沒有亞參文件(如果沒有的話就創建) cd $ORACLE_ ...
  • 操作系統 :CentOS7.3.1611_x64 PostgreSQL版本 :9.6 問題描述 在InfluxDB中存儲時序數據時,當tag值和時間戳都相同時會執行覆蓋操作。在PostgreSQL中能不能這麼用呢? 解決方案 可以藉助唯一索引和update來實現,這裡記錄下以備後用。 1、創建帶有唯 ...
  • 本文出處:http://www.cnblogs.com/wy123/p/7851294.html 在做資料庫的異常診斷的時候,之前在SQL Server上的時候,最主要的參考信息之一就是去看當前的活動Session有哪些,這些活動Session分別在執行什麼語句,用的什麼執行方式(計劃),運行了多久 ...
  • 在寫之前交代一下背景吧! 做開發也好久了,沒怎麼整理過知識,現在剖析一下自己對資料庫事務的認識,以前用sqlserver,現在轉java後又用mysql、oracle。我這塊就主要解釋一下mysql資料庫事務。其實好多內容適用於各種標準資料庫! 直接就進入正文了! 不管是做啥都有理論知識,我在這塊也 ...
  • 連接池中的參數介紹: name:表示你的連接池的名稱也就是你要訪問連接池的地址 auth:是連接池管理權屬性,Container表示容器管理 type:是對象的類型 driverClassName:是資料庫驅動的名稱 url:是資料庫的地址 username:是登陸資料庫的用戶名 password: ...
  • 1、收集統計信息vacuum full analyze ZCXT.ZCOT_PS_PROJECT; 2、檢查表的數據量分佈select gp_segment_id,count(*) from fact_table group by gp_segment_id; 3、表結構上建議創建表的時候,分佈鍵放 ...
  • 開發一個項目時都會有一個蛋疼的問題——寫資料庫需求文檔,然後根據這個文檔來建資料庫,如果後來需求改了,要改資料庫還要改文檔,有時忙著忙著就忘改了,導致文檔是過期的。那麼我們自己寫個腳本在資料庫運行直接生產數據字典,這樣只要改資料庫就行了。目前在網上搜了下,發現sqlServer只有2005的生成工具 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...