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  不会导致事务回滚的异常类名字数组

 

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