一個項目裡一般情況下隻會使用到一個資料庫,但有的需求是要顯示其他資料庫的内容,像這樣,我認為有兩種做法
1、在使用另一個資料庫的項目裡寫一些restful接口,滿足移動端PC端的同時也滿足其他應用調用資料的需求;
2、就是在項目裡配置多資料源;
我現在就是要使用另一個資料庫的資料,想到了以上兩種方法,為了更加熟悉spring,我打算使用第二種方案;我在百度上查了好多關于spring配置多資料源的blog,最後綜合一些,總結一下,用最簡潔,最直覺的方法來實作這個功能.
首先,單資料源配置流程如下

一個資料庫對應一個dataSource,然後對應sqlSession,然後再在Dao層實作,配置如下
但資料源就是這樣的配置,資料庫連接配接和一些屬性的配置--->sqlSession配置--->映射檔案哦欸之--->事物管理
如果是多資料源,有下面兩種方案
A和B,先看看B,分别為兩個資料源配置兩個sqlSession,然後再Dao層實作,雖然功能實作了,但是到後期如果在增加多個資料源的話,修改複雜,維護起來也相當的麻煩,也不符合開閉原則;
A同樣配置了兩個dataSource,然後實作一個DynamicDataSource類,使用一個sqlSession,這樣維護起來也非常的容易,我是用的就是A,配置起來相當簡單!
毋庸置疑,兩個dataSouce
然後配置自己實作的com.iquant.signal.configer.DynamicDataSource類,需指定預設的資料源,如使用其他再進行切換
sqlSession和事物和之前一樣,不用改動,實作DynamicDataSource類
繼承AbstractRoutingDataSource 重寫determineCurrentLookupKey方法
實作DataSourceContextHolder類
到此,多資料源就配置完成,如果想切換資料源,在代碼操作對應資料庫之前,加上此句代碼
這樣就完成了多資料源的配置和切換功能,以後還有資料庫添加,在配置一個dataSouce3.4.5.6.等等,就行了
為人:謙遜、激情、博學、審問、慎思、明辨、 笃行
學問:紙上得來終覺淺,絕知此事要躬行
為事:工欲善其事,必先利其器。
轉載請标注出處!