Spring事务传播行为

Spring 事务的传播行为是指当存在多个事务同时存在的时候,Spring 应该如何处理这些这些事务

传播行为

  1. TransactionDefinition.PROPAGATION_REQUIRED [默认值]
    • 如果当前存在事务,则加入该事务
    • 如果当前不存在事务,则创建一个新的事务
  2. TransactionDefinition.PROPAGATION_REQUIRES_NEW
    • 创建一个新的事务
    • 如果当前存在事务,则将当前事务挂起
  3. TransactionDefinition.PROPAGATION_SUPPORTS
    • 如果当前存在事务,则加入该事务
    • 如果当前没有事务,则以非事务的方式继续执行
  4. TransactionDefinition.PROPAGATION_NOT_SUPPORTED
    • 以非事务方式运行
    • 如果当前存在事务,则将当前事务挂起
  5. TransactionDefinition.PROPAGATION_NEVER
    • 以非事务方式运行
    • 如果当前存在事务,则抛出异常
  6. TransactionDefinition.PROPAGATION_MANDATORY
    • 如果当前存在事务,则加入该事务
    • 如果当前没有事务,则抛出异常
  7. TransactionDefinition.PROPAGATION_NESTED
    • 如果当前存在事务,则创建一个事务作为当前事务的嵌套事务来运行
    • 如果当前没有事务,则根据 TransactionDefinition.PROPAGATION_REQUIRED 决定