如果我有可交易的方法A,B,C和A调用B,C;然后,C抛出未在A中捕获的异常。
我的问题是B是否会回滚?
请注意,默认情况下禁用嵌套事务,因此A,B,C都可以自行处理。
由于
答案 0 :(得分:2)
请注意,默认情况下,Spring仅在事务边界之外抛出RuntimeException(或子类)时回滚事务(即,事务方法未捕获异常时)。
检查异常不会导致Spring将事务标记为回滚,除非您明确指定它。
答案 1 :(得分:0)
是
如果A,B和C都是@Transactional
方法,A调用B和C,Spring将使用单个事务管理所有三种方法的事务性质。换句话说,A,B和C的调用实际上将共享一个事务。如果C抛出异常,则回滚A,B和C使用的单个事务。