spring的七种事务传播行为,通俗易懂,绝不笼统,可以背诵,应付面试 -金沙1005

spring的七种事务传播行为,通俗易懂,绝不笼统,可以背诵,应付面试文章目录什么是事务传播行为propagation_requiredpropagation_nestedpropagation_requires_newpropagation_supportspropagation_not_supportedpropagation_mandatorypropagation_never复习spring的时候,发现网上说的spring其中事务传播行为,说的不太好,根本没有说到通俗易懂这个点子上,要么就是一顿抄,估计他自己都不懂什么意思,以为背一下就可以应付面试了,但是面试官听到

复习spring的时候,发现网上说的spring其中事务传播行为,说的不太好,根本没有说到通俗易懂这个点子上,要么就是一顿抄,估计他自己都不懂什么意思,以为背一下就可以应付面试了,但是面试官听到你这么笼统的回答,估计就知道你是背面试题的人了.

这句话网上说的很清楚: 事务传播行为时指,如果某个事务方法被另一个事务方法调用,该事务方法该如何执行,事务的行为时怎么样的.

如果当前没有事务,就新建一个事务,这句话你们肯定懂.如果有事务,就加入到该事务中来,记住,加入是合并成一个事务,所以之后这是一个事务.

那么,就会产生一种现象: 因为成了一个事务,形成了一个整体,所以外围方法回滚了,里面的方法也会回滚,里面的方法回滚了,外围的也会回滚.

我为什么要将这个放在第二个来说,因为这个很容易搞混了,如果你去查一下就知道,大多数博主就说出了: 如果当前存在事务,则在嵌套事务内执行。如果当前没有事务,则执行与propagation_required类似的操作.

我不得不谴责,对于我们这种小白来说,这些博主是很不负责任的,那种抄袭的博主更加不负责任,纵然他们的抄袭可能是从某个大牛或者书上来的,但也是照搬的,千篇一律,明明原文说的很难理解,只有高手能理解,却硬生生搬下来了强行让别人去理解,面试官问深点估计就不懂(可能我期望太高了,很多博主估计就是从哪个角落的博客搬过来的,那些什么所谓csdn专家,什么什么尤其详细的面经,啊呀,你们还真敢说啊,你自己搬过来的时候恐怕都没有看吧,有些概念直接弄反,错别字还一大堆,还那么多浏览量,真是假,太假了!最可气的是什么,你发现看什么最详细的面经的时候,看不懂是网上找,发现这些人沆瀣一气,全是那个吊样,答案全是一样的,甚至人家因为”<>”号而显示不出来的内容都直接空了出来,这种人明显就是一顿复制的,我知道有可能有些人是为了记录一下,让自己看,那你可以设置成私有的啊,干嘛要公布出来让别人浏览到啊,搞得一个博客平台乌烟瘴气,就算你没有搬抄的心里,那你最好写个转载的啊,为啥还要原创啊,原创还能过我真是服了!!!)

回到正题:
这个界别的意思是,如果当前存在事务,就加入到该事务中执行,如果当前没有事务,就和第一个一样,就新建一个事务.

听完我的解释是不是很蒙蔽?

怎么和第一个重复了,很多人说的就是这个样子,我也就这么说了,但是这里我不得不多说一句,如果是这种级别,加入到该事务中的时候,自己还是一个事务,也就是没有融合当前事务,这里会出现两个事务,那么如果出现回滚的场景: 如果外部事务回滚,因为内部事务镶嵌进来了,所以内部也会回滚,即内部因外部回滚而回滚,但反过来,如果内部先回滚,外部不会因为内部而回滚.这是和第一个有本质区别的,但你要记住,这个事务是一个子事务,不是独立的一个事务,你也可以这么理解,因为嵌套在事务内执行,所以成为了外围事务的子事务,所以外围事务是会影响子事务的.(这个特性就有点像继承关系了)

现在是不是理解第一个和第二个事务传播的区别了?

这个我特地放在第三个来说,是因为其定义好理解,但是回滚不好理解.

网上这么说:新建一个事务去执行,如果当前存在事务,把当前事务挂起,自己新建一个事务。也就是必须以自己的事务去执行.

这句话好理解吧,但是在回滚层面来说: 如果外部事务回滚,里面的事务是不受影响的,因为在这个传播行为中,里面的事务是新建的(就算它本来有事务),虽然是在里面被调用,但是却不是子事务,而是一个隔离的事务,也就是说,二者的回滚策略是互相隔离的,无论哪个回滚,都不会影响到彼此.

如果当前有事务,就加入到该事务中,成为一个事务,如果没有事务,自己也不会创建事务.

这句话不难理解,但这个事务传播行为时没用的,因为有事务加入了也变成了一个事务,这跟加不加都一样,而没有事务自己也不会创建事务,所以这个传播行为时没有意义的.

以非事务方式执行操作,如果当前存在事务,就把当前事务挂起。

这个传播行为的好处是,因为是以非事务方式执行操作,所以就不存在回滚,就不存在对当前事务的回滚的影响.

必须被一个开启了事务的方法调用自己,不然就报错.

这个更狠,如果当前方法不是事务,就报错,要求当前方法一定要是事务.

这个和上一个相反,一定要以非事务的方式调用它,如果存在事务,就报异常.

js555888金沙老品牌的版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由思创斯整理,转载请注明出处:https://ispacesoft.com/118652.html

(0)

相关推荐

  • php content-disposition 1m文件,content-disposition[通俗易懂]在常规http响应中,content-disposition响应标头是指示内容是否预期在浏览器中内联显示的标题,即,作为网页或作为网页的一部分或作为附件下载并且本地保存。在一个multipart/form-data正文中,httpcontent-disposition通用标题是一个标题,可以在多部分主体的子部分中使用,以提供有关它适用的字段的信息。子部分由标题中定义的边界分隔content-…

    2022年12月25日
  • oracle查看库中所有表以及所有用户数据_oracle查询其他用户下的所有表1.查看当前库里所有表/用户select*fromall_tablesselect*fromall_users2.查看当前用户下所有表select*fromuser_tables

    2022年12月21日
  • 查看oracle版本信息「建议收藏」selectbannerfromv$version;

    2022年12月20日
  • 大文件上传下载实现思路,分片、断点续传代码实现,以及webupload组件springboot大文件上传下载、分片、断点续传、代码实现

    2022年12月19日
  • 软件打包问题_软件包出现问题怎么解决在软件开发中难免不使用activex控件,添加控件后在引用这个目录下出现了dll,一直以为这个就是程序必须的文件,其实不然,在软件打包使用的时候,这些dll文件不足以使程序能够正常使用,我想到了注册这些dll,但是注册不成功。后来经指导,这些dll源于ocx控件的文件,使用了什么控件,就需要把相应的ocx控件拷贝到程序安装包中一起打包,我使用的打包工具是setupfactory,在打包文件的目录

  • redis的过期策略有哪些_redis设置永不过期如何设置过期时间?为key设置过期时间,expirekeytime(以秒为单位)。定期删除也叫主动删除:redis会定期主动淘汰一批已经过期的key。

    2022年10月31日
  • 机器码注册码算法激活成功教程_初级码农算法注册机编写扫盲之续篇—第一课原创作者:我要[dfcg]=======================================================编者注:一年前,对着满天对准我要[dfcg]头顶的臭鞋,菜菜的我写了几课东西,有印象的记得,没印象的最好,省了几只臭鞋飞过来的说~~~~~~~《算法注册机编写扫盲》这篇没有技术成份的东东,没想…

    2022年11月18日
  • 数值分析-拉格朗日中值定理与积分中值定理拉格朗日中值定理主条目:拉格朗日中值定理拉格朗日中值定理的几何意义如果函数f(x)满足在闭区间[a,b]上连续;在开区间(a,b)内可导,那么在(a,b)内至少有一点ξ(a b),使等式成立。此定理称为拉格朗日中值定理。拉格朗日中值定理是罗尔中值定理的推广,同时也是柯西中值定理的特殊情形。 积分中值定理积分中值定理分为积分

    2022年12月23日

发表回复

您的电子邮箱地址不会被公开。

联系金沙1005

关注“java架构师必看”公众号

回复4,添加站长微信。

附言:ispacesoft.com网而来。

关注微信
网站地图