【面试普通人VS高手系列】Spring中事务的传播行为有哪些?

本文介绍了Spring中的事务传播行为,包括REQUIRED、REQUIRE_NEW、NESTED等7种级别,并阐述了它们在实际项目和面试中的重要性。通过理解事务传播的本质,可以更好地掌握事务管理并应对技术面试。
摘要由CSDN通过智能技术生成

一个工作了2年的粉丝,私信了一个比较简单的问题。

说: “Spring中事务的传播行为有哪些?”

他说他能记得一些,但是在项目中基本上不需要配置,所以一下就忘记了。

结果导致面试被拒绝,有点遗憾!

ok,关于这个问题,看看普通人和高手的回答。

 部分高手面试文档已整理,需要的小伙伴可以扫描添加下方二维码

普通人:

嗯。。。。。。。。。

高手:

对于这个问题,需要从几个方面去回答。

首选, 所谓的事务传播行为,就是多个声明了事务的方法相互调用的时候,这个事务应该如何传播。

比如说,methodA()调用methodB(),两个方法都显示的开启了事务。

那么methodB()是开启一个新事务,还是继续在methodA()这个事务中执行?就取决于事务的传播行为。

在Spring中,定义了7种事务传播行为。

  1. REQUIRED:默认的Spring事物传播级别,如果当前存在事务,则加入这个事务,如果不存在事务,就新建一个事务。

  2. REQUIRE_NEW:不管是否存在事务,都会新开一个事务,新老事务相互独立。外部事务抛出异常回滚不会影响内部事务的正常提交。

  3. NESTED:如果当前存在事务,则嵌套在当前事务中执行。如果当前没有事务, 则新建一个事务,类似于REQUIRE_NEW。

  4. SUPPORTS:表示支持当前事务,如果当前不存在事务,以非事务的方式执行。

  5. NOT_SUPPORTED:表示以非事务的方式来运行,如果当前存在事务,则把当前事务挂起。

  6. MANDATORY:强制事务执行,若当前不存在事务,则抛出异常.

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

Spring事务传播级别一般不需要定义,默认就是PROPAGATION_REQUIRED,除非在嵌套事务的情况下需要重点了解。

以上就是我对这个问题的理解!

总结

这个问题其实只需要理解事务传播行为的本质以及为什么需要考虑到事务传播的问题。

就可以直接基于自身的技术积累来推演出答案,无非就是基于可能的策略进行穷举,怎么也能推演出5种吧。

本期的普通人VS高手面试系列就到这里结束了。

有任何不懂的技术面试题,欢迎随时私信我

 部分高手面试文档已整理,需要的小伙伴可以扫描添加下方二维码

↓↓↓↓↓↓↓↓

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

跟着Mic学架构

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值