Spring事务传播机制

90 阅读1分钟

Spring 事务传播机制有哪些?

  • Spring 事务传播机制可使用 @Transactional(propagation=Propagation.REQUIRED) 来定义, Spring 事务传播机制的级别包含以下 7 种:

    1. REQUIRED: 默认的事务传播级别, 它表示如果当前存在事务, 则加入该事务; 如果当前没有事务, 则创建一个新的事务;
    2. SUPPORTS: 如果当前存在事务, 则加入该事务; 如果当前没有事务, 则以非事务的方式继续运行;
    3. MANDATORY: (mandatory: 强制性)如果当前存在事务, 则加入该事务; 如果当前没有事务, 则抛出异常;
    4. REQUIRES_NEW: 表示创建一个新的事务, 如果当前存在事务, 则把当前事务挂起。也就是说不管外部方法是否开启事务, REQUIRES_NEW 修饰的内部方法会新开启自己的事务, 且开启的事务相互独立, 互不干扰。
    5. NOT_SUPPORTED: 以非事务方式运行, 如果当前存在事务, 则把当前事务挂起。
    6. NEVER: 以非事务方式运行, 如果当前存在事务, 则抛出异常。
    7. NESTED: 如果当前存在事务, 则创建一个事务作为当前事务的嵌套事务来运行; 如果当前没有事,则该取值等价于REQUIRED。

image.png

Spring事务失效的12种场景

image.png

cloud.tencent.com/developer/a…