SpringBoot 手動觸發事物回滾

我們都喜歡在方法上面加上 @Transactional 註解的方式來實現事務,但是事物回滾是當代碼發生異常並拋出來的時候,纔會主動觸發事物回滾,但是有的時候,我們希望滿足某個條件就觸發事物的回滾操作(如:某一張表數據更新未能成功更新),這種情況下要如何做?這裏記錄兩種方案:

前提:在方法上面加上:@Transactional 註解

1、手動拋出一個異常:throw new RuntimeException();

2、通過方法回滾:TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();

 

特別說明:當在方法內部如果加了 try {} catch() {} 時,是不會主動觸發事務,這個時候就需要再catch 代碼塊中主動回滾事務或者繼續拋出一個異常。如以下代碼:

@Transaction
public String methodName() {
    try {
        // 邏輯代碼
    } catch(Exception e) {
        // 當上面的方法發生異常時
        TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
        e.printStackTrace();
    }
}

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章