首页 > 编程知识 正文

发布spring全局异常处理优缺点,spring事务回滚的原理

时间:2023-05-06 17:59:17 阅读:202843 作者:1127


默认spring只在发生未被捕获的runtimeexcetpion时才回滚。

 

最容易解决的办法:代码级控制:TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();

 

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

 

 但这不是从根本上解决问题。为什么不加这句抛出runtimeException异常不回滚呢

看看自己的代码是不是最后写了

finally{

return ...

}

 如果这样写,即使手动抛出runtimeException也不会回滚了,具体原因可参见

《java异常捕捉陷阱(内存泄漏,finally块,catch块,继承得到的异常)》

http://blog.csdn.net/zshake/article/details/9207791 

 

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。