事务传播

  • REQUIRED

    REQUIRED 是默认的事务传播类型。Spring 检查当前是否有可用的事务,将当前业务逻辑加入可用的事务,如果不存在则创建一个事务。

    @Transactional(propagation = Propagation.REQUIRED)
    public void requiredExample(String user) { 
        // ... 
    }

    因为 REQUIRED 是默认的事务传播类型,所以我们可以省略它:

    @Transactional
    public void requiredExample(String user) { 
        // ... 
    }
  • SUPPORTS

    Spring 首先检查是否有可用事务存在,有则使用,否则业务逻辑会以非事务模式运行

  • MANDATORY

    Spring 首先检查是否有可用事务存在,有则使用,否则抛出错误。

  • NEVER

    Spring 检查是否有可用事务存在,如果存在则抛出错误。

  • NOT_SUPPORTED

    Spring 检查是否有可用事务存在,Spring 会终止当前事务,并且使业务逻辑以非事务模式运行。

  • REQUIRES_NEW

    Spring 检查是否有可用事务存在,Spring 会终止当前事务,并且创建一个新的事务。

  • NESTED

    Spring 检查是否存在事务,如果存在,则标记保存点。这意味着如果我们的业务逻辑执行抛出异常,那么事务就会回滚到这个保存点。如果没有活动事务,它就像 REQUIRED 一样工作。

最后更新于