Springboot @Transactional捕獲異常事務回滾

問題  一般情況下 try{}catch{}的使用回使得@Transactional註解失效

可使用如下方式 實現事務回滾

@Transactional(rollbackFor = Throwable.class)
    @Override
    public DocIstBO savePOIDoc(SaveDocDTO saveDocDTO) {
        
       try{
}catch{
    //第一鍾方法  手動回滾
    TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
    //第二種方法 直接拋出異常 當前線程停止運行 事務回滾
     throw CommonException.exception("io error 模板文件不存在");

}

}

@Transactional註解的全部屬性詳解

屬性 類型 描述
value String 可選的限定描述符,指定使用的事務管理器
propagation enum: Propagation 可選的事務傳播行爲設置
isolation  enum: Isolation 可選的事務隔離級別設置
readOnly     boolean     讀寫或只讀事務,默認讀寫
timeout     int (in seconds granularity)  事務超時時間設置
rollbackFor     Class對象數組,必須繼承自Throwable  導致事務回滾的異常類數組
rollbackForClassName     類名數組,必須繼承自Throwable 導致事務回滾的異常類名字數組
noRollbackFor     Class對象數組,必須繼承自Throwable  不會導致事務回滾的異常類數組
noRollbackForClassName     類名數組,必須繼承自Throwable  不會導致事務回滾的異常類名字數組

 

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