5

我知道事务管理器中的默认回滚策略是在发生 RuntimeExceptions 时自动回滚。但是,如果我有一个允许传播的已检查异常会发生什么?

4

1 回答 1

4

但是请注意,Spring 框架的事务基础代码默认情况下只会在运行时、未经检查的异常情况下将事务标记为回滚;也就是说,当抛出的异常是 RuntimeException 的实例或子类时。(默认情况下,错误也会导致回滚。)从事务方法抛出的检查异常不会导致事务回滚。

资源

即使抛出检查异常,Spring 也会像一切正常一样提交事务。
如果需要,您可以配置已检查异常的回滚。
喜欢

<tx:advice id="txAdvice" transaction-manager="txManager">
  <tx:attributes>
     <tx:method name="get*" read-only="false" rollback-for="AnyCheckedException"/>
     <tx:method name="*"/>
  </tx:attributes>
</tx:advice>

AnyCheckedException被抛出 时将执行回滚。

这可能会有所帮助:Spring transaction management with checked and unchecked exception

于 2012-10-03T06:15:09.080 回答