ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

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

2022-05-08 17:04:02  阅读:169  来源: 互联网

标签:以非 事务 Spring 存在 传播 VS 当前 普通人


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

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

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

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

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

普通人:

嗯。。。。。。。。

高手:

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

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

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

carbon-202204111807

那么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高手面试系列就到这里结束了。

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

file

版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Mic带你学架构
如果本篇文章对您有帮助,还请帮忙点个关注和赞,您的坚持是我不断创作的动力。欢迎关注「跟着Mic学架构」公众号公众号获取更多技术干货!

标签:以非,事务,Spring,存在,传播,VS,当前,普通人
来源: https://www.cnblogs.com/mic112/p/16246026.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有