关于弹簧嵌套事务的简短问题

时间:2010-07-30 06:19:38

标签: spring transactions

如果我有可交易的方法A,B,C和A调用B,C;然后,C抛出未在A中捕获的异常。

我的问题是B是否会回滚?

请注意,默认情况下禁用嵌套事务,因此A,B,C都可以自行处理。

由于

2 个答案:

答案 0 :(得分:2)

请注意,默认情况下,Spring仅在事务边界之外抛出RuntimeException(或子类)时回滚事务(即,事务方法未捕获异常时)。

检查异常不会导致Spring将事务标记为回滚,除非您明确指定它。

答案 1 :(得分:0)

如果A,B和C都是@Transactional方法,A调用B和C,Spring将使用单个事务管理所有三种方法的事务性质。换句话说,A,B和C的调用实际上将共享一个事务。如果C抛出异常,则回滚A,B和C使用的单个事务。

相关问题