TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
這里使用的場景是,跨服務調用接口,比如:用戶信息和用戶積分信息在分別存在兩個系統中,我們在用戶系統中調用一個接口同時刪除這兩個信息,假設service層方法為deleteUserAndPoints(),具體如下所示:
deleteUserAndPoints(){
第一步:刪除用戶
第二步:通過restTemplate方式調用積分系統刪除接口
根據返回的結果狀態,成功或者失敗
如果失敗則:TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(), 然后return 相應的提示信息(“刪除失敗”);如果直接return 其實事務不會回滾的,導致用戶信息刪除,積分信息未刪除;另外,我們正常情況下可以直接 throw new RuntimeException(),也能回滾事務,但是這等於手動制造了一個系統異常,個人覺得很不友好
如果成功則:不處理
}