Spring動態切換多數據源事務開啟后,動態數據源切換失效解決方案


關於某操作中開啟事務后,動態切換數據源機制失效的問題,暫時想到一個取巧的方法,在Spring聲明式事務配置中,可對不改變數據庫數據的方法采用不支持事務的配置,如下:

對單純查詢數據的操作設置為不支持事務,可避免一些動態數據源切換失效的場景。如本人在Shiro權限管理開發中,所有的前台頁面需要通過jsp的shiro權限控制標簽控制頁面的一些顯示效果,此時很可能因業務需要,查詢顯示的數據和控制權限的數據不在同一數據庫中,需要動態切換數據庫鏈接,頁面初始化顯示的數據,對應的都是查詢數據的操作,判斷當前用戶是否有權限,也是查詢權限資源的操作,故而私認為可選擇上面的取消查詢操作的事務支持,即可避免動態切換數據源失效的情景。
這只是想到的一個取巧的避免問題的方法,歡迎有識之士指正;如有更合適的解決方案,共同探討。

-------------------------------------------------------------------------正規解決方案-----------------------------------------------------------------------------------------------
找到了!找到了!下面分享正規的解決方案。。。。
上文說過了,出現多數據源動態切換失敗的原因是因為在事務開啟后,數據源就不能再進行隨意切換了,也就是說,一個事務對應一個數據源。那么傳統的Spring管理事務是放在Service業務層操作的,所以更換數據源的操作要放在這個操作之前進行。也就是切換數據源操作放在Controller層,可是這樣操作會造成Controller層代碼混亂的結果。故而想到的解決方案是將事務管理在數據持久 (Dao層) 開啟,切換數據源的操作放在業務層進行操作,就可在事務開啟之前順利進行數據源切換,不會再出現切換失敗了。
---------------------
作者:Woody_Jiang
來源:CSDN
原文:https://blog.csdn.net/weixin_39216596/article/details/78912104
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM