Spring aop事务异常回滚(rollbackFor)机制和源码分析
我们这使用spring aop进行声明式事务编程时,经常需要配置rollbackFor,指需要开启事务的方法抛出异常时,事务针对什么异常进行回滚,如下图是spring事务回滚的
源码:txInfo.transactionAttribute.rollbackon(ex)对异常类型进行判断,判断配置的事务属性是否对ex这个异常类型进行回滚,
如果进行回滚,则调txInfo.getTransactionManager().rollback()进行回滚。如果对这种类型的异常不进行回滚,则调用txInfo.getTransactionManager().commit()进行
事务提交,当然commint()方法里会对transactionStatus的rollbackonly进行判断,如果该事务被标记为rollbackonly,则提交失败。