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

Spring事务实现原理

我们一般将Spring事务使用在数据库操作上面,用来保证数据的一致性和完整性

实现原理:

通过AOP事务管理器实现的

1.AOP拦截:

拦截@Transactional注解的方法调用

2.事务管理器:

负责事务的开启,提交和回滚

3.事务逻辑执行流程

开启事务:

调用getTransaction()方法, 绑定数据库连接到当前线程

调用目标业务的方法

提交或回滚:

如果方法执行成功,调用comit()提交事务

如果抛出业务,根据事务配置调用rollback()回滚事务

因为方法调用的嵌套场景中可能涉及很多个业务方法,所以Spring需要通过传播行为来明确这些事务之间的关系

了解一下:

|传播行为|适用场景| |-|-| |REQUIRED|默认值,外部方法有事务时加入其事务,否则创建一个新事务。适合大多数场景。| |REQUIRES_NEW|每次调用都创建一个新事务,外部事务被挂起。适合某些必须独立完成的操作(如记录日志)。| |NESTED|在外部事务中嵌套事务,内部事务可以独立回滚但不会影响外部事务。| |SUPPORTS|如果外部方法有事务,就加入;没有事务时以非事务方式运行。| |NOT_SUPPORTED|暂停当前事务,以非事务方式运行内部方法。| |MANDATORY|必须在已有事务中运行,否则抛异常。| |NEVER|必须在非事务环境中运行,否则抛异常。|


http://www.mrgr.cn/news/79382.html

相关文章:

  • 遗传算法与深度学习实战(27)——进化卷积神经网络
  • uniapp小程序 slot中无法传递外部参数的解决方案
  • 【优选算法 模拟】模拟算法入门详解 : 模拟算法小专题
  • Ariba Procurement: Administration_Integration Basics
  • 如何迅速成为一个领域的专家?
  • auto-gptq安装以及不适配软硬件环境可能出现的问题及解决方式
  • 公共云提供商正在错失人工智能机遇
  • Linux 进程 ID(PID)查看 / 获取
  • 在做题中学习(77):快排
  • 万物可爬(以爬取浏览器井盖图片和豆瓣电影名字为例)
  • Next.js 系统性教学:构建应用的路由与页面管理
  • jeecg-uniapp 跨域问题解决方法记录
  • Let up bring up a linux.part2 [十一]
  • Codeforces Round 991 (Div. 3) F. Maximum modulo equality(区间gcd模板)
  • 《单片机原理及接口技术》(C51编程)(第三版)------张毅刚主编
  • Java线程的interrupt中断、wait-notify/all(源码级分析)
  • 容器第四天(day041)
  • 计算机网络复习6——应用层
  • MicroBlaze软核开发(二):GPIO
  • 【AI系统】Auto-Tuning 原理
  • Vue智慧商城项目
  • 【k8s实践】 创建第一个Pod(Nginx)
  • 写NFC标签支持Android安卓Ohos纯血鸿蒙唤醒微信小程序
  • java面向对象实验——扫雷+24点
  • windsurf简介
  • [软件工程]九.可依赖系统(Dependable Systems)