SpringBoot 2異常処理用try/catchエラーメッセージとスクロールバック(自動スクロール/手動スクロール/部分ロールバック)


問題の背景
時々、私たちはいつもSpringBoot 2でService方法に対して完全な事務をして、異常を発見した時に、ロールバックして、またエラー情報を返すことができます.
場面一:自動スクロール(直接投げて、try/catchではない)
@Override
@Transactional(rollbackFor = Exception.class)
public Object submitOrder() throws Exception {  
     success();  
     //  exception               ,  success()          。 
     exception(); 
     return ApiReturnUtil.success();
}
場面二:手動でロールバック(try/catchを行い、ロールバックして投げ出す)
@Override
@Transactional(rollbackFor = Exception.class)
public Object submitOrder (){  
    success();  
    try {  
        exception(); 
     } catch (Exception e) {  
        e.printStackTrace();     
        //      
        TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
        return ApiReturnUtil.error();
     }  
    return ApiReturnUtil.success();
}
追加:ロールバック部分異常
  • Object savePoint = TransactionAspectSupport.currentTransactionStatus().createSavepoint();を用いてロールバックポイントを設定する.
  • TransactionAspectSupport.currentTransactionStatus().rollbackToSavepoint(savePoint);を使用してsavePointにロールバックする.
  • @Override
    @Transactional(rollbackFor = Exception.class)
    public Object submitOrder (){  
        success();  
        //       ,
        Object savePoint = TransactionAspectSupport.currentTransactionStatus().createSavepoint();
        try {  
            exception(); 
         } catch (Exception e) {  
            e.printStackTrace();     
            //      
            TransactionAspectSupport.currentTransactionStatus().rollbackToSavepoint(savePoint);
            return ApiReturnUtil.error();
         }  
        return ApiReturnUtil.success();
    }