。附:不支援原生spring事務。
注意點
spring:
datasource:
type: com.zaxxer.hikari.hikaridatasource
dynamic:
primary: system #設定預設的資料來源或者資料來源組
strict:
false #設定嚴格模式,預設false不啟動. 啟動後在未匹配到指定資料來源時候會丟擲異常,不啟動則使用預設資料來源.
datasource:
database1:
url: jdbc:mysql:
//localhost:
3306
/system?useunicode=
true
&characterencoding=
utf-
8&usessl=
false
username: username
password: password
driver-
class
-name: com.mysql.cj.jdbc.driver
#連線池可以在每個資料來源下面單獨配置,也可抽出成公共配置
hikari:
maximum-pool-size:
100 minimum-idle:
20 data-source-properties:
cacheprepstmts:
true
prepstmtcachesize:
250 prepstmtcachesqllimit:
2048
useserverprepstmts:
true
database2:
......
..
疑似坑點:碰到了多資料來源依賴在mybatisplus核心依賴之後,多資料來源依賴無法引入的問題(可能是個人環境問題)。
引入mybatisplus的多資料來源配置後,無法使用spring的原生事務,強行使用@transactional註解後會出現預設使用第乙個資料來源作為連線,此時,如果是查詢非預設資料來源資料,會報表不存在的異常。
網上的多資料來源事務配置比較繁瑣,這裡實驗了一種比較簡單的多資料來源事務配置
注:只支援單個資料來源事務,多資料來源之間的事務不支援
原因:使用@ds註解動態切換資料來源之後spring自帶事務並不知道有哪些資料來源,那麼解決也就從這裡開始
第一步
//注入資料來源給jta事務管理器,在使用spring原生事務註解時,指定事務管理器transactionmanager,由jta對多資料來源進行管理(這裡未嘗試其他事務管理器,感興趣的可以嘗試一下)
@bean
(name =
"transactionmanager"
) @primary
@order(2
)public datasourcetransactionmanager transactionmanager
(@qualifier
("datasource"
) datasource datasource)
第二步//在service層的方法上註解相應的事務和@ds
@transactional
(transactionmanager =
"transactionmanager"
) @ds
("chddata"
)public
void
servicemethod()
Mybatis plus多資料來源配置
之前一直想配置的,但是每次出了各種問題。知道今天才配置好。原來這麼簡單。只看看人家的部落格,寫了好幾個類,結果配置失敗 我敲最後還是去mybatis plus的官網學會的 但是我按照官網的做法配置一直有問題。而且我也找到問題的原因了 應該是yml檔案裡面的 符號轉義做的有問題。但是我還沒想到解決辦法...
MyBatis Plus 動態資料來源
修改後正確的資料來源配置 dynamic datasource spring boot starter 是乙個基於springboot的快速整合多資料來源的啟動器。其支援 jdk 1.7 springboot 1.4.x 1.5.x 2.0.x。裡面會表明優劣勢 示例配置資料來源 datasourc...
SpringBoot Redis 多資料來源
session存到redis後,cache和session是在乙個庫的 使用redis多資料配置可以分開。這樣ssession的redis伺服器可以單獨作為認證服務,多個業務模組可以配置單獨的cache庫,防止多模組key衝突的問題。原始碼 github 增加redis2的配置spring.redi...