我知道事务管理器中的默认回滚策略是在发生 RuntimeExceptions 时自动回滚。但是,如果我有一个允许传播的已检查异常会发生什么?
user689842
问问题
4273 次
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 回答