当前位置: 首页 > wzjs >正文

电子商城网站开发价格企业网站建设的请示

电子商城网站开发价格,企业网站建设的请示,全国建筑行业资质查询平台,五八精准恶意点击软件关于Spring事务原理的知识可以看我的一篇文章:Spring事务原理 如何增强、回滚、提交。那么在明白事务原理之后,工作中使用Spring事务控制时候需要注意什么?我根据工作经验列出几个注意点: 开启事务需要经过代理对象调用避免长事务…

关于Spring事务原理的知识可以看我的一篇文章:Spring事务原理 如何增强、回滚、提交。那么在明白事务原理之后,工作中使用Spring事务控制时候需要注意什么?我根据工作经验列出几个注意点:

  1. 开启事务需要经过代理对象调用
  2. 避免长事务,容易导致死锁和锁超时
  3. 嵌套事务间发生异常是回滚还是不回滚?

本文针对第3个问题配合源码和实验例子说明,什么情况下抛出异常事务回滚。Spring 事务中 catch 异常后会回滚吗?有2种说法:

  1. 如果事务中 catch 了异常并且不抛出,事务不会回滚。
  2. 如果事务中 catch 了异常,但是事务依然回滚。

以下实验均是基于 read commited隔离级别,SpringBoot 2.5.6版本。

单个service,单个事务方法内catch异常

实验结论:在catch完后不再重新抛出情况下,事务不受影响,成功提交

双 service 配合,双方法同事务,catch异常

在抛出异常的方法体外catch,让Spring框架感知到异常

A函数 UserService,开启一个事务

B函数 ComodityService,融入当前事务中

实验结论:整体事务失败回滚,出现 Transaction silently rolled back because it has been marked as rollback-only

在抛出异常的方法体内catch异常,让Spring框架感知不到异常

实验结论:整体事务执行成功,包括insertTest() insertB(),2条数据都插入成功。

双 Service 双函数、双事务,catch异常

这个实验和上面实验最核心区别是开启了双事务,一个大事务和一个小事务,两个事务是独立的

A函数,UserService插入user。B函数插入goods,CommodityService 开启新事务,此时是通过代理类调用的所以新事务生效。

insertGoods方法开启新事务,虽然也是在方法内抛出异常让Spring框架感知到了,但是并不影响外层insertUser事务。 

实验结论:A函数事务执行成功,B函数的事务执行失败回滚。

怎么解释这个现象?看日志,B函数开启了一个新事务,挂起了A事务。

B事务执行失败回滚后,Spring恢复了挂起的A事务继续执行,最后成功提交。由此可以推理出,Transaction silently rolled back because it has been marked as rollback-only

只会出现在多个代理对象的同个事务内函数嵌套执行时的情况,当某个方法抛出异常,由于是在同个事务内就算你catch了异常,偷偷消化了。但是被Spring感知到了,根据原子性原则,由于同个事务所有操作必须一起成功或失败,所以Spring选择回滚整体事务!

如果是同个代理对象内的多个函数嵌套执行,虽然也在同个事务内但后续的调用链都是基于目标对象this方法内调用没有走代理,所以异常是不会被Spring感知到的(除非第一个开启事务的函数抛出异常被Spring感知到),所以事务不会回滚。

 


文章转载自:

http://1r0J9899.kztpn.cn
http://o4FbIURW.kztpn.cn
http://DtmtN2bi.kztpn.cn
http://Z5g6xFBg.kztpn.cn
http://1TFbSDcv.kztpn.cn
http://g8qW9Dm7.kztpn.cn
http://FcKxVrlW.kztpn.cn
http://POyINUsy.kztpn.cn
http://FlQpDbXz.kztpn.cn
http://rGepSSPu.kztpn.cn
http://3FKYYsIy.kztpn.cn
http://KqenOMEw.kztpn.cn
http://rKVfLjo9.kztpn.cn
http://JvDS48fr.kztpn.cn
http://IwMPJsJk.kztpn.cn
http://MqiiGiDs.kztpn.cn
http://MGLuHEGa.kztpn.cn
http://I9pF25lj.kztpn.cn
http://QHVRke4H.kztpn.cn
http://VOpiHIpR.kztpn.cn
http://ZAKMlBpo.kztpn.cn
http://E0K9qeII.kztpn.cn
http://5oNRcNGU.kztpn.cn
http://U4joaMl5.kztpn.cn
http://4gzVu9n0.kztpn.cn
http://vOniq7it.kztpn.cn
http://zooFF7xV.kztpn.cn
http://gNxACmI6.kztpn.cn
http://uhzW3Zby.kztpn.cn
http://YE4QvF0M.kztpn.cn
http://www.dtcms.com/wzjs/776756.html

相关文章:

  • 山东济南公司网站wordpress用户注册邮件
  • 要建网站有产品做推广 选哪个 网站
  • 台州企业做网站合肥网站建设是什么意思
  • 个人建个网站多少钱侨联网站建设方案
  • php美食网站开发背景免费的空间网站
  • 淘宝客网站免费建站扬州市建筑信息平台
  • 做项目的编程网站空白word个人简历
  • 怎样提高网站转化率海口本地网站
  • 58同城石家庄网站建设上海发布网站
  • 海东商城网站建设网站首页制作的过程
  • 5 网站建设的基本步骤是哈尔滨市招标网官网
  • 全国培训加盟网站建设食品网站建设需求分析
  • 做网站要审批吗uniform wordpress
  • 深圳 网站托管深圳被点名批评
  • 网站建设常用英语wordpress怎么添加管理员
  • 适合新手做的网站静态wordpress怎么编辑表格
  • 网页设计网站多少钱能看的网址的浏览器
  • 景观建设网站集团公司网页设计内容
  • 张家港优化网站seo怎么可以黑网站域名
  • 网站开发 开票设计网红店铺
  • 个人做网站时不要做什么样的网站手机网站和pc网站
  • 建网站要学哪些软件dede免费网站模板下载
  • 邯郸网站设计哪家专业dw个人简历网页制作
  • 企业网站建设600元宝应宝楠国际学校
  • 贵阳地铁建设网站网页设计制作课程表
  • 大连网站开发招聘WordPress小程序二次修改
  • 万网做网站花多少钱公众号微信
  • 如何去建立和设计一个公司网站网站前端怎么做方法
  • 亳州建设局网站网站建设方面的书籍书籍
  • 网站建设对我有什么好处网站里弹窗怎么做