有時,在乙個專案中會用到多資料來源,此時可以使用苞公尺豆的dynamic-datasource-spring-boot-starter
:
首先,引入jar
包:
>
>
com.baomidougroupid
>
>
dynamic-datasource-spring-boot-starterartifactid
>
>
2.5.4version
>
dependency
>
spring:
datasource:
url: jdbc:mysql://localhost:3306/test2?servertimezone=utc&useunicode=true&characterencoding=utf8
driver-class-name: com.mysql.cj.jdbc.driver
username: root
password: root
dynamic:
primary: master
datasource:
master:
url: jdbc:mysql://localhost:3306/test2?servertimezone=utc&useunicode=true&characterencoding=utf8
driver-class-name: com.mysql.cj.jdbc.driver
username: root
password: root
sub:
url: jdbc:mysql://localhost:3306/test2?servertimezone=utc&useunicode=true&characterencoding=utf8
driver-class-name: com.mysql.cj.jdbc.driver
username: root1
password: root1
其中配置了兩個資料來源,master
與sub
,其中選擇master
作為預設資料來源(對應primary
配置);
若想使用sub
作為部分**的資料來源,可在serviceimpl
做如下配置:
@ds
("sub"
)@service
public
class
userserviceimpl
extends
serviceimpl
implements
userservice
在使用@ds
註解時,有如下注意事項:
不能使用事務,否則資料來源不會切換,使用的還是第一次載入的資料來源;
第一次載入資料來源之後,第二次、第三次…操作其它資料來源,如果資料來源不存在,使用的還是第一次載入的資料來源;
資料來源名稱不要包含下劃線,否則不能切換。
DS 註解多資料來源執行緒問題
簡單記錄一下 在使用ds註解更換多資料來源的時候,使用了執行緒來處理資料。service層使用了 ds註解引入資料來源。方法中直接使用了執行緒池執行緒,然後再呼叫方法,然後發現資料來源其實並沒有引入。資料表找不到。然後就把查詢方法放出執行緒,先查詢,處理的時候再放入執行緒方可。log.info sy...
spring多資料來源動態切換及事務
1 使用了spring的aop思想,實現了動態資料來源的切換。2 spring的事務管理,是基於資料來源的,所以如果要實現動態資料來源切換,而且在同乙個資料來源中保證事務是起作用的話,就需要注意二者的順序問題,即 在事物起作用之前就要把資料來源切換回來。舉乙個例子 web開發常見是三層結構 cont...
動態資料來源 mysql
前言 最近開發時遇到這樣乙個場景 在一段定時任務中需要將a資料庫中查詢的結果處理後,然後插入b資料庫,這是就考慮到用動態資料來源,在這裡記錄一下配置過程,僅供參考 一 在spring.xml新增配置 二 新增相應的工具類 public inte ce datasourceentry 資料來源切換實現...