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