Spring 注解 @Transactiona 事务如何手动回滚

@Transactional(propagation = Propagation.REQUIRED, isolation = Isolation.DEFAULT, rollbackFor = Exception.class)
事务回滚有两个办法

方法 1

事务声明指定了回滚条件,可以抛出异常回滚,如:
throw new Exception()
不过该方法直接抛出异常,在某些情况下不会接着执行异常以后的代码

方法 2

手动回滚
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
使用该代码直接回滚事务,但接下来的代码依然可以执行
如:

              if (result != 1){
                    TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
                    return result;
              }

实际中根据实际情况选则那种回滚方法

  
    展开阅读全文