外层方法 A(REQUIRED)调用内层方法 B(REQUIRED),B 抛出 RuntimeException 被 A 捕获后 A 正常返回,最终结果是?

Spring / Java Web

  1. A.B 的修改回滚,A 的修改照常提交
  2. B.A 与 B 的修改都正常提交,因为异常在 A 内已被捕获,事务管理器感知不到 B 的失败
  3. C.整个事务回滚,A 结束时抛出 UnexpectedRollbackException
  4. D.B 的修改回滚,A 因异常已被捕获而自动重新开启一个新事务,只提交自己的修改