public enum Propagation {

    /**
     * 支持当前事务,如果不存在则创建一个新事务。类似于同名的EJB事务属性。
     * 这是默认的事务传播行为。
     */
    REQUIRED(TransactionDefinition.PROPAGATION_REQUIRED),

    /**
     * 支持当前事务,如果不存在则非事务执行。类似于同名的EJB事务属性。
     * 注意: 对于具有事务同步的事务管理器,SUPPORTS与根本没有事务略有不同,
     * 因为它定义了将应用同步的事务范围。 因此,将为整个指定范围共享相同的资源(JDBC连接,休眠会话等)。
     * 共享相同的资源(JDBC连接,休眠会话等)。
     * @see org.springframework.transaction.support.AbstractPlatformTransactionManager#setTransactionSynchronization
     */
    SUPPORTS(TransactionDefinition.PROPAGATION_SUPPORTS),

    /**
     * 支持当前事务,如果不存在则抛出异常。 类似于同名的EJB事务属性。
     */
    MANDATORY(TransactionDefinition.PROPAGATION_MANDATORY),

    /**
     * 创建一个新事务,如果存在则暂停当前事务。类似于同名的EJB事务属性。
     * @see org.springframework.transaction.jta.JtaTransactionManager#setTransactionManager
     */
    REQUIRES_NEW(TransactionDefinition.PROPAGATION_REQUIRES_NEW),

    /**
     * 以非事务方式执行,如果当前事务存在,则挂起当前事务。 类似于同名的EJB事务属性。
     * @see org.springframework.transaction.jta.JtaTransactionManager#setTransactionManager
     */
    NOT_SUPPORTED(TransactionDefinition.PROPAGATION_NOT_SUPPORTED),

    /**
     * 非事务执行,如果存在事务,则引发异常。 类似于同名的EJB事务属性。
     */
    NEVER(TransactionDefinition.PROPAGATION_NEVER),

    /**
     * 如果当前事务存在,则在嵌套事务中执行,否则,其行为类似于REQUIRED。EJB中没有类似功能。
     * 注意: 实际创建嵌套事务将仅在特定事务管理器上起作用。开箱即用,
     * 这仅适用于JDBC DataSourceTransactionManager。一些JTA提供程序可能也支持嵌套事务。
     * @see org.springframework.jdbc.datasource.DataSourceTransactionManager
     */
    NESTED(TransactionDefinition.PROPAGATION_NESTED);


    private final int value;


    Propagation(int value) {
        this.value = value;
    }

    public int value() {
        return this.value;
    }

}

请输入图片描述

Last modification:August 4th, 2020 at 06:50 pm
如果觉得我的文章对你有用,请随意赞赏