TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();rest
這裏使用的場景是,跨服務調用接口,好比:用戶信息和用戶積分信息在分別存在兩個系統中,咱們在用戶系統中調用一個接口同時刪除這兩個信息,假設service層方法爲deleteUserAndPoints(),具體以下所示:接口
deleteUserAndPoints(){事務
第一步:刪除用戶io
第二步:經過restTemplate方式調用積分系統刪除接口service
根據返回的結果狀態,成功或者失敗方法
若是失敗則:TransactionAspectSupport.currentTransactionStatus().setRollbackOnly(), 而後return 相應的提示信息(「刪除失敗」);若是直接return 其實事務不會回滾的,致使用戶信息刪除,積分信息未刪除;另外,咱們正常狀況下能夠直接 throw new RuntimeException(),也能回滾事務,可是這等於手動製造了一個系統異常,我的以爲很不友好im
若是成功則:不處理異常
}vi