@Transactional開啟事務導致AbstractRoutingDataSource動態資料來源無法切換的解決方案
問題場景:
下圖是定時推送資料的介面,它做的操作是定時獲取A表資料向圖二的接收資料介面推送資料,並且修改A表的更新狀態欄位。
下圖是接收推送資料的介面,它做的操作是接收推送過來的A表的資料然後插入到B表。
下圖是定時推送資料介面的業務邏輯方法的實現層。
在下圖65行處我模擬了異常的發生,然後系統回滾出現了異常,詳見圖四,報了一個物件名無效的錯誤,並且沒有進行事務回滾,但是執行成功了推送資料介面中的修改更新A表欄位的方法。相當於做推送方法的時候發生了異常,就直接連線A庫了,不再進行切換。
問題描述:
當程式出現異常後,事務回滾無法切換資料來源
解決方案:
需要在controller層先切到要進行資料操作的資料庫上來,這樣後面再呼叫有事務的方法時,就能保持在當前庫的連線上了,後面的事務回滾也就生效了
簡單一句話:首先切換庫,再配置事務
相關文章
- AbstractRoutingDataSource 實現動態資料來源切換原理簡單分析
- spring+atomikos+mybatis 多資料來源事務(動態切換)SpringMyBatis
- mybatis 多資料來源動態切換MyBatis
- SSM(八)動態切換資料來源SSM
- Spring AOP動態切換資料來源Spring
- Spring 多資料來源 AOP 動態切換Spring
- 解決hyper v導致docker無法啟動問題Docker
- Spring 4+atomikos+JdbcTemplate+DynamicDataSource 分散式事務資料來源動態切換SpringJDBC分散式
- Java開啟事務(@Transactional)Java
- spring-data-redis 動態切換資料來源SpringRedis
- Spring實現多資料來源動態切換Spring
- 歸檔問題導致的資料庫無法啟動資料庫
- HA異常導致oracle資料庫無法啟動Oracle資料庫
- 註解切換雙資料來源
- 基於AOP的動態資料來源切換(附原始碼)原始碼
- 錯誤初始化引數導致無法啟動的解決辦法
- 無法開啟控制檯的解決方案
- Spring Boot MyBatis 動態資料來源切換、多資料來源,讀寫分離Spring BootMyBatis
- 修改SQLNET.ORA導致資料庫無法啟動SQL資料庫
- 來了!阿里開源分散式事務解決方案 Fescar阿里分散式
- 來了!阿里開源分散式事務解決方案Fescar阿里分散式
- oracle可執行檔案s位導致的Cluster資源組無法正常啟動的問題解決Oracle
- WinXP啟動無法顯示桌面,無法啟動IE,無法關機的解決方案
- 專案要實現多資料來源動態切換,咋搞?
- eclipse: workspace出錯導致無法啟用的解決Eclipse
- [zt] oracle可執行檔案s位導致的Cluster資源組無法正常啟動的問題解決Oracle
- oracle SGA設定過大導致資料庫無法啟動Oracle資料庫
- 行業動態 | 每日處理2500萬事務資料的IoT解決方案行業
- Workstation服務無法啟動導致無法訪問檔案伺服器伺服器
- MybatisPlus多資料來源及事務解決思路MyBatis
- VMware USB Arbitration Service 無法啟動的解決方案
- 事務註解(@Transactional)引起的資料覆蓋故障
- docker容器故障致無法啟動解決例項Docker
- Spring中的AOP,以及宣告式事務 @Transactional無法攔截事務Spring
- siebel切換資料來源【轉】
- oracle 9iAgent無法啟動解決方案Oracle
- Ubuntu開機後進入initramfs導致無法進入系統解決方案Ubuntu
- Linux檔案系統破壞,導致系統無法啟動解決辦法Linux