Spring传播属性有哪些

worktile 其他 59

回复

共3条回复 我来回复
  • worktile的头像
    worktile
    Worktile官方账号
    评论

    Spring传播属性是指在进行方法调用时,决定事务是否可以被传播到其他方法或者其他事务中的一组属性。Spring中提供了以下几种传播属性:

    1. PROPAGATION_REQUIRED(默认):如果当前存在事务,则加入该事务;如果当前没有事务,则新建一个事务。这是最常用的传播属性,保证在一个事务中执行。

    2. PROPAGATION_SUPPORTS:如果当前存在事务,则加入该事务;如果当前没有事务,则按非事务方式执行。

    3. PROPAGATION_MANDATORY:如果当前存在事务,则加入该事务;如果当前没有事务,则抛出异常。

    4. PROPAGATION_REQUIRES_NEW:新建一个事务,并挂起当前事务,如果存在事务则将其挂起。该传播属性会在执行方法的过程中创建一个新的独立事务,不受外部事务的影响。

    5. PROPAGATION_NOT_SUPPORTED:以非事务方式执行操作,如果当前存在事务,则将其挂起。

    6. PROPAGATION_NEVER:以非事务方式执行操作,如果当前存在事务,则抛出异常。

    7. PROPAGATION_NESTED:如果当前存在事务,则在嵌套事务内执行;如果当前没有事务,则新建一个事务。嵌套事务是一个独立的事务,它依赖于外部事务的提交或回滚。

    上述传播属性可以根据不同的业务需求进行选择,合理的使用传播属性可以确保数据的一致性和事务的隔离性。在编写代码时,需要仔细考虑每个方法的传播属性,以及它们之间的逻辑关系,以避免出现不一致的情况。

    1年前 0条评论
  • fiy的头像
    fiy
    Worktile&PingCode市场小伙伴
    评论

    Spring框架中的传播属性是用来定义事务在不同方法之间如何传播的。事务的传播属性可以控制多个事务方法之间的事务行为。以下是Spring框架中常用的传播属性:

    1. REQUIRED:如果当前有事务在运行,则该方法将在该事务内运行,否则就创建一个新的事务。REQUIRED是Spring默认的事务传播属性。

    2. SUPPORTS:如果当前有事务在运行,则该方法将在该事务内运行,否则就以非事务的形式运行。SUPPORTS适用于不需要事务的方法。

    3. MANDATORY:该方法必须在一个已存在的事务中运行,否则就会抛出异常。MANDATORY用于要求方法在事务中运行的场景。

    4. REQUIRES_NEW:该方法必须在一个新的事务中运行,如果当前有事务在运行,则将当前事务挂起。REQUIRES_NEW用于要求方法在新的事务中运行的场景。

    5. NOT_SUPPORTED:该方法不能在一个事务中运行,如果当前有事务在运行,则将当前事务挂起。NOT_SUPPORTED用于不希望方法参与事务的场景。

    6. NEVER:该方法不能在一个事务中运行,如果当前有事务在运行,则抛出异常。NEVER用于禁止方法参与事务的场景。

    7. NESTED:如果当前有事务在运行,则该方法将在该事务的嵌套事务中运行,如果当前没有事务在运行,则该方法将创建一个新的事务。NESTED用于支持嵌套事务的场景。

    通过使用不同的传播属性,可以灵活地控制事务的行为,以适应不同的业务需求。

    1年前 0条评论
  • 不及物动词的头像
    不及物动词
    这个人很懒,什么都没有留下~
    评论

    在Spring中,事务的传播属性用于控制多个事务方法之间的事务行为,包括数据库事务的开始、提交、回滚等。Spring事务的传播属性有以下几种:

    1. Propagation.REQUIRED(默认):如果当前存在事务,则加入到当前事务中执行,如果当前没有事务,则创建一个新事务并执行。这是最常用的属性,可以确保方法始终运行在一个事务中。

    2. Propagation.SUPPORTS:如果当前存在事务,则加入到当前事务中执行,如果当前没有事务,则以非事务的方式执行。适用于不需要强制事务的场景。

    3. Propagation.MANDATORY:强制要求当前方法在事务中执行,如果当前没有事务,则抛出异常。适用于要求方法必须在事务中执行的场景。

    4. Propagation.REQUIRES_NEW:无论当前是否存在事务,都创建一个新的事务并执行。即使当前存在事务,也会挂起当前事务。

    5. Propagation.NOT_SUPPORTED:以非事务的方式执行方法,如果当前存在事务,则挂起当前事务并在方法执行完毕后恢复事务。

    6. Propagation.NEVER:以非事务的方式执行方法,如果当前存在事务,则抛出异常。

    7. Propagation.NESTED:如果当前存在事务,则在嵌套事务中执行,如果当前没有事务,则创建一个新事务并执行。嵌套事务是嵌套在外层事务中的独立事务,嵌套事务的成功或回滚不会对外层事务产生影响。

    以上是Spring事务的传播属性,在使用Spring进行事务管理时,根据不同的需求选择合适的传播属性可以更好地控制事务的行为。

    1年前 0条评论
注册PingCode 在线客服
站长微信
站长微信
电话联系

400-800-1024

工作日9:30-21:00在线

分享本页
返回顶部