一个工作了 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 带你学架构
!
如果本篇文章对您有帮忙,还请帮忙点个关注和赞,您的保持是我一直创作的能源。欢送关注同名微信公众号获取更多技术干货!