当一个被检查的异常在事务中传播时会发生什么?

5

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

1个回答

阿里云服务器只需要99元/年,新老用户同享,点击查看详情
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事务管理与已检查和未检查的异常


1
这个选择背后有什么原因吗? - ihebiheb

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,