【面试普通人VS高手系列】Spring中事务的传播行为有哪些?
2022-05-08 16:47
671 查看
一个工作了2年的粉丝,私信了一个比较简单的问题。
说: “Spring中事务的传播行为有哪些?”
他说他能记得一些,但是在项目中基本上不需要配置,所以一下就忘记了。
结果导致面试被拒绝,有点遗憾!
ok,关于这个问题,看看普通人和高手的回答。
普通人:
嗯。。。。。。。。
高手:
对于这个问题,需要从几个方面去回答。
首选, 所谓的事务传播行为,就是多个声明了事务的方法相互调用的时候,这个事务应该如何传播。
比如说,methodA()调用methodB(),两个方法都显示的开启了事务。
那么methodB()是开启一个新事务,还是继续在methodA()这个事务中执行?就取决于事务的传播行为。
在Spring中,定义了7种事务传播行为。
- REQUIRED:默认的Spring事物传播级别,如果当前存在事务,则加入这个事务,如果不存在事务,就新建一个事务。
- REQUIRE_NEW:不管是否存在事务,都会新开一个事务,新老事务相互独立。外部事务抛出异常回滚不会影响内部事务的正常提交。
- NESTED:如果当前存在事务,则嵌套在当前事务中执行。如果当前没有事务, 则新建一个事务,类似于REQUIRE_NEW。
- SUPPORTS:表示支持当前事务,如果当前不存在事务,以非事务的方式执行。
- NOT_SUPPORTED:表示以非事务的方式来运行,如果当前存在事务,则把当前事务挂起。
- MANDATORY:强制事务执行,若当前不存在事务,则抛出异常.
- NEVER:以非事务的方式执行,如果当前存在事务,则抛出异常。
Spring事务传播级别一般不需要定义,默认就是PROPAGATION_REQUIRED,除非在嵌套事务的情况下需要重点了解。
以上就是我对这个问题的理解!
总结
这个问题其实只需要理解事务传播行为的本质以及为什么需要考虑到事务传播的问题。
就可以直接基于自身的技术积累来推演出答案,无非就是基于可能的策略进行穷举,怎么也能推演出5种吧。
本期的普通人VS高手面试系列就到这里结束了。
有任何不懂的技术面试题,欢迎随时私信我
版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自
Mic带你学架构! 如果本篇文章对您有帮助,还请帮忙点个关注和赞,您的坚持是我不断创作的动力。欢迎关注「跟着Mic学架构」公众号公众号获取更多技术干货!
相关文章推荐
- 【面试普通人VS高手】Spring 中Bean的作用域有哪些?
- 【面试普通人VS高手系列】Fail-safe机制与Fail-fast机制分别有什么作用
- 【面试普通人VS高手系列】lock和synchronized区别
- 【面试普通人VS高手系列】谈谈你对Seata的理解
- 【面试普通人VS高手系列】线程池如何知道一个线程的任务已经执行完成
- 【面试普通人VS高手系列】Dubbo的服务请求失败怎么处理?
- 【面试普通人VS高手系列】b树和b+树的理解
- 【面试普通人VS高手系列】说一说Mybatis里面的缓存机制
- 【面试普通人VS高手系列】Spring Boot的约定优于配置,你的理解是什么?
- 【面试普通人VS高手系列】innoDB如何解决幻读
- 【面试普通人VS高手系列】谈谈你对AQS的理解
- 【面试普通人VS高手系列】CPU飙高系统反应慢怎么排查?
- 【面试普通人VS高手系列】Redis和Mysql如何保证数据一致性
- Spring中基于Annotation方式管理事务与传播行为
- spring的事务传播行为
- Spring事务的传播行为和隔离级别
- spring的4种事务特性,5种隔离级别,7种传播行为
- spring事务的传播行为与隔离级别
- Spring事务的传播行为
- spring的4种事务特性,5种隔离级别,7种传播行为