问题描述 :spring
在service作业务处理操做2个数据库表发生异常事务没有回滚 数据库
默认spring事务只在发生未被捕获的 runtimeexcetpion时才回滚。
spring aop 异常捕获原理:被拦截的方法需显式抛出异常,并不能经任何处理,这样aop代理才能捕获到方法的异常,才能进行回滚,默认状况下aop只捕获runtimeexception的异常,但能够经过 代理在service不能够捕获异常 必须让spring aop 捕获 才能进行回滚事务
解决方法io
1: 去掉service的 try catch 原理
2:TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();语句,手动回滚,aop