Spring事务传播机制

101 阅读1分钟

Spring事务传播机制

1.场景

事务的传播行为一般发生在事务嵌套的场景中。例如方法A和方法B都添加了事务,当方法A调用方法B时,方法B执行失败是否会带动事务A回滚。
Spring规定了七大传播机制来解决嵌套事务控制的问题。

2.传播机制

  1. PROPAGATION_REQUIRED
    如果当前没有事务,就创建一个事务,如果已经存在事务,就加入到这个事务。这是Spring默认的传播机制
  2. PROPAGATION_SUPPORTS
    当前存在事务,就加入当前事务,如果当前没有事务,就以非事务的方法执行
  3. PROPAGATION_MANDATORY
    当前存在事务,则加入当前事务,如果当前事务不存在,则抛出异常
  4. PROPAGATION_NOT_SUPPORTED
    始终以非事务的方式执行,如果当前存在事务,则挂起当前事务
  5. PROPAGATION_NEVER
    不使用事务,如果当前事务存在,则抛出异常
  6. PROPAGATION_REQUIRES_NEW
    创建一个新事务,如果当前存在事务,就将这个事务挂起。
    外部事务与内部事务互相独立,内部事务异常不会导致外部事务回滚,外部事务回滚也不会导致内部事务回滚。
  7. PROPAGATION_NESTED
    如果当前事务存在,则在嵌套的事务中执行,否则开启一个事务。
    内部事务回滚不会导致外部事务回滚,但外部事务回滚会导致内部事务回滚。