Spring事务①

说一下Spring的事务传播行为

Spring的事务传播行为是指在一个包含多个事务操作的方法调用链中,如何处理事务的传播和边界。

Spring定义了以下七种事务传播行为:

  1. REQUIRED(默认行为):该方法必须在一个事务中执行。如果当前存在事务,则方法将在该事务内执行;否则,将创建一个新事务并在其内执行。在这种传播行为下,方法的执行结果将对整个事务产生影响。

  2. SUPPORTS:该方法可以在事务内执行,也可以不在事务内执行。如果当前存在事务,则方法将在该事务内执行;否则,将以非事务方式执行。在这种传播行为下,方法的执行结果不会对事务产生影响。

  3. MANDATORY:该方法必须在一个已存在的事务中执行。如果当前不存在事务,则将抛出异常。在这种传播行为下,方法的执行依赖于外部调用者是否提供了事务上下文。

  4. REQUIRES_NEW:无论当前是否存在事务,该方法总是会创建一个新的事务。如果当前存在事务,则将挂起该事务并创建一个新事务,在新事务内执行方法。在这种传播行为下,方法的执行与外部事务无关,它拥有自己独立的事务。

  5. NOT_SUPPORTED:该方法不应该在事务内执行。如果当前存在事务,则将挂起该事务,并以非事务方式执行方法。在这种传播行为下,方法的执行不受任何外部事务影响。

  6. NEVER:该方法不应该在事务内执行。如果当前存在事务,则将抛出异常。在这种传播行为下,方法的执行不能发生在任何事务环境中。

  7. NESTED:该方法创建一个嵌套事务,作为当前事务的子事务执行。如果当前存在事务,则方法将在子事务内执行;如果当前不存在事务,则行为类似于REQUIRED。嵌套事务可以独立进行提交或回滚,但它们依赖于外部事务的最终结果。

对于事务传播行为,有几个核心概念需要注意:

  • 事务的传播行为是通过注解或编程方式来定义的。
  • 方法A调用方法B时,事务传播行为适用于方法B。
  • 事务传播行为只对外部方法调用起作用,对内部方法的调用不会创建新的事务。

通过在Spring中正确配置和使用事务传播行为,可以实现对多个事务操作的一致性和隔离性控制。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值