spring抛出异常没有回滚

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

默认spring只在发生未被捕获的runtimeexcetpion时才回滚 ,即所有代码编译时强制检查的异常spring都不会回滚的。这类代码都需要我们手工抛出运行时异常。

但有时候因为代码写的有问题,即使抛出运行时异常也没有回滚,最简单的解决方法:

最容易解决的办法:代码级控制:

TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();

    try{  
    ...  
    }catch(Exception e){  
       log.error(e.getMessage(),e);  
       TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();  
       throw new RuntimeException( e.getMessage(), e );  
      }   

一般没有回滚,请查看下代码是否有 

finally{

return ...

}

这样的代码,同时注意,默认只有在同一个方法中才会回滚。

转载于:https://my.oschina.net/sprouting/blog/1499270

你可能感兴趣的:(spring抛出异常没有回滚)