我看大多数外包公司以及去甲方是大厂的都很爱问 Spring事务的传播特性,这个可以说是没有什么难度、非常基础的知识点了,如果你还不能掌握是不是要挨打了?!
下面我就简单讲讲 Spring事务的传播特性 ,也就是其中的精髓所在。
1、Spring事务的传播特性 是个什么东东?
顾名思义,肯定和事务相关,涉及场景就是2个嵌套的方法分别有事务时,外层事务对内层事务的影响。
这就是它的精髓啦。
2、Spring事务的传播特性 有几种?
7种。这个知道就好,可以记住一两个,没必要全记住。我放一张图列举一下到底有哪几种:
3、简单介绍3个
-
PROPAGATION_REQUIRED
这个是默认的。分两种情况,第一:外层有required事务,内层无论有没有其他事务特性类型都要按照外层的required事务走。
第二:外层无事务,内层事务特性类型是required,则内层新建一个事务(用自己的事务)。
- PROPAGATION_SUPPORTS
也分两种情况,第一:外层有事务,内层是supports事务,则内层就用外层的事务。
第二:外层没有事务,内层是supports事务,则内层是非事务的,该执行执行该报错报错,不会回滚。
tip: 可以这么理解,supports事务是比较懒的,你有我就用你的,你没有我啥也不用。
- PROPAGATION_MANDATORY
也分两种情况,第一:外层有事务,内层事务特性类型是mandatoy,内层就按外层事务走。
第二:外层没有事务,内层事务特性类型是mandatoy,则直接给你报异常 说“No existing transaction found for transaction marked with propagation 'mandatory'”。
tip:mandatory 可以理解为 事妈,外层你有就用你的,你没有就跟你说“不行啊,你跟我不匹配”。
。。。。。。其他的类推即可。。。。。。
4、小结
对于刚入门的同学,你看再多的文章也就是上面我标红那一句,不用花太多的心思,理解即可。如果非要记住一个,你就记住默认的是required就行。
我的目标就是将复杂的知识简单化,将无聊的知识有趣化。传播知识又不是写论文,做报告,遇到这样的,没什么价值,除了晦涩难懂。