前言
最近项目中发生了一个事务异常:UnexpectedRollBackException,然后重温一下Spring的事务管理方面的知识
**
Spring事务捕获到异常以后的操作
**
首先是Spring的事务机制,当一个方法开启事务后,如果代码中发生了异常后,将会进入
TransactionAspectSupport中,代码大概如下
捕获异常后经过一些处理后交给TransactionAspectSupport.completeTransactionAfterThrowing方法处理,在图中2处判断该异常是否要进行回滚,默认情况下运行时异常回滚,非运行时异常不回滚直接提交,然后在图3处进行事务回滚
具体的事务回滚操作是在上图中所示代码进行的,首先判断该事务是否是一个新的事务,