介绍
spring事务回滚的规则
默认配置下,当抛出的异常为
RuntimeException异常、及其子类的异常,就会回滚事务抛出checked异常(如:
IOException)则 不会事务回滚
可以通过配置,指定抛出某异常时回滚事务,也可以指定抛出某些异常时 不回滚事务。
一般修改为:抛出java.lang.Exception异常就回滚事务
rollbackFor
可配置多个 异常类,抛出这些异常时会 回滚
rollbackForClassname
可配置多个 异常类的名字,抛出这些异常时会 回滚
noRollbackFor
可配置多个 异常类,抛出这些异常时 不会回滚
noRollbackForClassname
可配置多个 异常类的名字,抛出这些异常时 不会回滚
配置
注解
只要抛出异常就会回滚
@Transactional(rollbackFor = Exception.class)
配置文件
<tx:advice id="txAdvice" transaction-manager="txManager">
<tx:attributes>
<tx:method name="insert*" propagation="REQUIRED" read-only="false" rollback-for="java.lang.Exception" ></tx:method>
</tx:attributes>
</tx:advice>
参考:
https://www.cnblogs.com/zjj1996/p/9139567.html