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

Spring面试题之事务的传播行为

Spring事务的传播行为是java面试中比较常问到的内容,有同学总是会与隔离级别弄混淆。起始很好理解的,传播行为是多个事务方法之间的调用时,如何对事务进行管理。举个例子,方法A存在事务,方法B也存在事务,那么A方法调用B方法时,是用A的事务还是B方法的事务?这里就需要配置传播行为来告诉Spring如何去管理事务。

Spring事务分为七种:

  • REQUIRED:支持当前事务,如果当前方法存在事务,就用当前方法的事务,如果当前方法不存在事务,就新建一个事务。比如A调用B,传播行为是REQUIRED,那么A方法存在事务,调用B方法时,B方法也会加入到A方法的事务中。A、B同时成功或同时失败。
  • SUPPORTS:支持当前事务,如果当前方法不存在事务,就以非事务运行。还是A、B两个方法,A方法不存在事务,A调用B,那么B方法也以非事务运行;但是如果A存在事务,那么B也加入A的事务。
  • REQUIRES_NEW:不支持当前事务,不管当前方法存不存在事务,都会新建一个事务执行。就是不管方法A有没有事务,A调用B时,B都会新建一个事务,B方法自己内部同时成功或同时失败.
  • MANDATORY:这个单词是强制的意思,“人如其名”,就是我一定要在事务中运行。如果当前方法不存在事务就抛出异常。
  • NOT_SUPPORTED:以非事务运行,不支持事务,如果当前方法存在事务,就挂起事务。A方法如果存在事务,A方法调用B方法,B方法会将A方法的事务挂起直到B方法运行完毕。直白的说,就是我B方法失败了也不用你A方法负责。
  • NEVER:以非事务方式运行,不支持事务,如果当前方法存在事务,就抛出异常。
  • NESTED:嵌套事务。如果当前存在事务,则在嵌套事务内执行;如果当前没有事务,则创建一个新的事务。嵌套事务可以独立于外部事务进行提交或回滚。

http://www.kler.cn/a/386158.html

相关文章:

  • Linux 命令行配置为单臂旁路由。
  • AI风向标|算力与通信的完美融合,SRM6690解锁端侧AI的智能密码
  • 【C++】—— map 与 set 深入浅出:设计原理与应用对比
  • 通过Python 调整Excel行高、列宽
  • Android 单元测试环境配置问题 Execution failed for task ‘:mergeDebugJavaResource‘.
  • 【问卷调研】HarmonyOS SDK开发者社区用户需求有奖调研
  • electron 中 ipcRendererEvent 作用
  • 面试总结!
  • spark的学习-03
  • YOLOv8相较于YOLOv5有哪些改进?
  • 滑动窗口最大值
  • 《手写Spring渐进式源码实践》实践笔记(第十七章 数据类型转换)
  • 布朗运动
  • 如何用全局事件总线实现组件间的通信
  • STM32标准库-待机模式
  • 数据集市是什么?有什么优势?
  • OpenGL学习笔记(三) 绘制图形
  • RabbitMQ 篇-深入了解 RabbitMQ 安装以及 SpringAMQP 的基础使用(声明队列和交换机、发送接收消息、配置 JSON 消息转化器)
  • 【Linux系列】利用 CURL 发送 POST 请求
  • Android13 系统/用户证书安装相关分析总结(二) 如何增加一个安装系统证书的接口
  • 网络协议都有哪些?
  • 软件工程技术专业在物联网应用开发中的关键技术与挑战
  • XSS详解
  • 【Rust设计模式之Fold模式】
  • Java 中的 Arrays.sort () 方法:排序的利器
  • GOT-OCR:开源免费的OCR项目,多语言多模态识别,端到端识别新体验!不仅能识别文字,连数学公式、图表都不在话下!