spring事务 异常不会回滚

问题描述 :spring

在service作业务处理操做2个数据库表发生异常事务没有回滚 数据库

默认spring事务只在发生未被捕获的 runtimeexcetpion时才回滚。  
   spring aop  异常捕获原理:被拦截的方法需显式抛出异常,并不能经任何处理,这样aop代理才能捕获到方法的异常,才能进行回滚,默认状况下aop只捕获runtimeexception的异常,但能够经过  代理

在service不能够捕获异常 必须让spring aop 捕获 才能进行回滚事务

解决方法io

1: 去掉service的 try catch 原理

2:TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();语句,手动回滚,aop

相关文章
相关标签/搜索