Spring事务的传播机制

  1. @Transactional(propagation=Propagation.REQUIRED)
    如果存在事务,则用当前事务,如果不存在则创建一个新事务。这是事务注释的默认设置

  2. @Transactional(propagation=Propagation.SUPPORTS)
    如果存在事务,则用当前事务,如果不存在则以非事务方式执行。

  3. @Transactional(propagation=Propagation.MANDATORY)
    必须以事务方式执行,如果不存在事务则抛出异常。

  4. @Transactional(propagation=Propagation.REQUIRES_NEW)
    无论是否存在事务都创建一个新事务,如果存在事务,则先挂起当前事务。先执行新的事务,执行完成再执行老的事务。

  5. @Transactional(propagation=Propagation.NOT_SUPPORTED)
    以非事务方式执行,如果存在则暂停当前事务。

  6. @Transactional(propagation=Propagation.NEVER)
    必须以非事务方式执行,如果存在事务则抛出异常。(和MANDATORY相反)

  7. @Transactional(propagation=Propagation.NESTED)
    如果当前事务存在,则在嵌套事务中执行,否则行为类似于REQUIRED。

posted @ 2021-06-24 15:25  Dzsom  阅读(74)  评论(0)    收藏  举报