spring多資料來源下 事務不生效

celebrateyang發表於2019-04-01

多資料來源下, 加了@Transactional(rollbackFor = Exception.class)後發現,資料來源切換不了.
在這裡插入圖片描述
不加事務註解,即只有@DataSourceChange時的流程是,程式執行到fetchRawDataForCriterias()方法時,會先去執行 doAround()方法,設定當前執行緒的資料來源.
在這裡插入圖片描述
然後執行 determinCurrentLookupKey()方法,得到當前執行緒的資料來源.
在這裡插入圖片描述
加了@Transactiona後,發現程式會第一時間執行determineCurrentLookupKey(), 後面又執行doAround()方法.但是再後面就不執行determinCurrentLookupKey()了.這就導致,資料來源沒有實現切換.
解決方法:調整兩個annotation執行的先後順序,先執行@DataSourceChange(hopper = true),於是修改下面程式碼,加一個Order註解
在這裡插入圖片描述
如果覺得本篇文章有所幫助,請幫忙微信掃描下本人寫的一個實用小程式 “安全期隨時看”,讓你隨時掌握愛愛時間,多謝幫助!
---------------------------在這裡插入圖片描述 -------------------------
-------------------------------------------安全期隨時看---------------------------------------------

相關文章