@Transactional開啟事務導致AbstractRoutingDataSource動態資料來源無法切換的解決方案
問題場景:
下圖是定時推送資料的介面,它做的操作是定時獲取A表資料向圖二的接收資料介面推送資料,並且修改A表的更新狀態欄位。
下圖是接收推送資料的介面,它做的操作是接收推送過來的A表的資料然後插入到B表。
下圖是定時推送資料介面的業務邏輯方法的實現層。
在下圖65行處我模擬了異常的發生,然後系統回滾出現了異常,詳見圖四,報了一個物件名無效的錯誤,並且沒有進行事務回滾,但是執行成功了推送資料介面中的修改更新A表欄位的方法。相當於做推送方法的時候發生了異常,就直接連線A庫了,不再進行切換。
問題描述:
當程式出現異常後,事務回滾無法切換資料來源
解決方案:
需要在controller層先切到要進行資料操作的資料庫上來,這樣後面再呼叫有事務的方法時,就能保持在當前庫的連線上了,後面的事務回滾也就生效了
簡單一句話:首先切換庫,再配置事務
相關文章
- AbstractRoutingDataSource 實現動態資料來源切換原理簡單分析
- mybatis 多資料來源動態切換MyBatis
- spring-data-redis 動態切換資料來源SpringRedis
- Java開啟事務(@Transactional)Java
- 基於AOP的動態資料來源切換(附原始碼)原始碼
- 註解切換雙資料來源
- eclipse: workspace出錯導致無法啟用的解決Eclipse
- 來了!阿里開源分散式事務解決方案Fescar阿里分散式
- 來了!阿里開源分散式事務解決方案 Fescar阿里分散式
- 專案要實現多資料來源動態切換,咋搞?
- MybatisPlus多資料來源及事務解決思路MyBatis
- 行業動態 | 每日處理2500萬事務資料的IoT解決方案行業
- 基於Spring的Web專案執行時切換資料來源的一種解決方案SpringWeb
- SpringBoot 這麼實現動態資料來源切換,就很絲滑!Spring Boot
- 克隆虛擬機器導致Linux無法啟動網路卡的分析與解決虛擬機Linux
- 事務註解(@Transactional)引起的資料覆蓋故障
- siebel切換資料來源【轉】
- Ubuntu開機後進入initramfs導致無法進入系統解決方案Ubuntu
- 30個類手寫Spring核心原理之動態資料來源切換Spring
- 應用使用JNDI,資料庫無法連線,導致的程序無法啟動問題處理資料庫
- windows time服務無法啟動的解決方法Windows
- 記一次mysql無法啟動的解決方案MySql
- .NET開源的處理分散式事務的解決方案分散式
- 30個類手寫Spring核心原理之動態資料來源切換(8)Spring
- 微服務分散式事務解決方案-開源軟體seata微服務分散式
- 剛柔並濟的開源分散式事務解決方案分散式
- Spring 下,關於動態資料來源的事務問題的探討Spring
- Spring-Boot 多資料來源配置+動態資料來源切換+多資料來源事物配置實現主從資料庫儲存分離Springboot資料庫
- MYSQL資料庫服務無法啟動MySql資料庫
- IIS應用程式回收導致應用中Hangfire等後臺任務無法正常啟動工作的解決方法
- 阿里巴巴開源分散式事務解決方案 Fescar阿里分散式
- tomcat無法啟動的解決方法Tomcat
- 記一次ORA-01102導致資料庫例項無法啟動案例資料庫
- @Transactional註解管理事務和手動提交事務
- VMware DHCP Service服務無法啟動問題的解決
- SpringBoot框架:通過AOP和自定義註解完成druid連線池的動態資料來源切換(三)Spring Boot框架UI
- 【Spring註解】事務註解@TransactionalSpring
- 域名被反詐中心攔截無法開啟的解決方案