1、用於非public的方法上 default、protected、private 都不行
2、分支事務內捕獲異常未拋出且返回TM未處理的結果 例如A接口調用了feignB和feignC的接口,B正常成功執行,C捕獲了異常但是未拋出,A也沒C的返回結果判斷是否正常執行。
3、分支事務加了spring的@Transactional註解,則出現異常由spring rollback,其餘分支事務正常提交或回滾 例如A接口調用了feignB和feignC的接口,feignB未加@Transactional,feignC加了@Transactional,C出現異常時,會在A回滾事務前回滾C自己的事務。
4、異常類型不一致 例如拋出的是GlobalTransactionException,但是rollbackFor的是NullPointerException,也不會回滾。
5、一個類裏面的第二層調用方法用全局事務不會生效 例如serviceA.methodA() 調本類的methodB ,方法B上面使用全局事務失效 需要新建一個serviceB,將全局事務方法methodB寫在serviceB裏,methodA調用serviceB.methodB() 纔會生效
6、全局事務內的分支事務創建或修改的數據會有相應的undo_log記錄,如果提交或回滾前,數據被修改,導致undo_log的記錄數據與庫裏的數據不一致,會一直重試回滾。
7、異步接口處理出現異常,不會影響全局事務
8、未加包掃描 @MapperScan
9、數據庫引擎不支持事務