阿里三连问: 事务传播行为到底是什么?

Python与numpy版本兼容性排查指南 本文详细解析了Python与numpy版本兼容性问题,提供了快速诊断和解决版本冲突的实用方法。通过查看版本信息、使用官方兼容性对照表以及降级或升级环境等方案,帮助开发者有效避免常见的报错问题,如'ImportError'和'AttributeError'。文章还介绍了使用虚拟环境和requirements.txt等工程实践,确保项目依赖的稳定性。 阅读详情

阿里三面的事务传播行为到底是什么?

世人都劝我们要适应环境,其实,他们忘了,我们也是环境的一部分,会影响、鞭策着他人,所以,改变自己更是改变环境的一种呀。从我做起,开始学习,继续坚持,Java的未来,还靠你们。大家加油!。没错,对于整个职业生涯来说,现在的确是刚开始。

事务传播行为

什么叫事务传播行为?听起来挺高端的,其实很简单。
即然是传播,那么至少有两个东西,才可以发生传播。单体不存在传播这个行为。

事务传播行为(propagation behavior)指的就是当一个事务方法被另一个事务方法调用时,这个事务方法应该如何进行。
例如:methodA事务方法调用methodB事务方法时,methodB是继续在调用者methodA的事务中运行呢,还是为自己开启一个新事务运行,这就是由methodB的事务传播行为决定的。

Spring定义了七种传播行为:

现在来看看传播行为其中的三个

1、PROPAGATION_REQUIRED

如果存在一个事务,则支持当前事务。如果没有事务则开启一个新的事务。
可以把事务想像成一个胶囊,在这个场景下方法B用的是方法A产生的胶囊(事务)。

举例有两个方法:

@Transactional(propagation = Propagation.REQUIRED)
public void methodA() { 
  methodB();
  // do something
} 
@Transactional(propagation = Propagation.REQUIRED)
public void methodB() { 
  // do something
} 

单独调用methodB方法时,因为当前上下文不存在事务,所以会开启一个新的事务。
调用methodA方法时,因为当前上下文不存在事务,所以会开启一个新的事务。当执行到methodB时,methodB发现当前上下文有事务,因此就加入到当前事务中来。

2、PROPAGATION_SUPPORTS

如果存在一个事务,支持当前事务。如果没有事务,则非事务的执行。但是对于事务同步的事务管理器,PROPAGATION_SUPPORTS与不使用事务有少许不同。

举例有两个方法:

@Transactional(propagation = Propagation.REQUIRED)
public void methodA() {
  methodB();
  // do something
} 
// 事务属性为SUPPORTS
@Transactional(propagation = Propagation.SUPPORTS)
public void methodB() { 
  // do something
} 

单纯的调用methodB时,methodB方法是非事务的执行的。当调用methdA时,methodB则加入了methodA的事务中,事务地执行。

3、PROPAGATION_MANDATORY

如果已经存在一个事务,支持当前事务。如果没有一个活动的事务,则抛出异常。

@Transactional(propagation = Propagation.REQUIRED)
public void methodA() { 
  methodB();
  // do something
} 
// 事务属性为MANDATORY
@Transactional(propagation = Propagation.MANDATORY)
public void methodB() { 
  // do something
} 

当单独调用methodB时,因为当前没有一个活动的事务,则会抛出异常throw new IllegalTransactionStateException(“Transaction propagation ‘mandatory’ but no existing transaction found”);当调用methodA时,methodB则加入到methodA的事务中,事务地执行。

通过上面三个的介绍,相信大家对Spring事务传播行为有了一定理解,那么还有其他4种传播行为是怎么样的呢? 大家别着急请关注我们直播课程**<阿里三面:Spring事务传播行为的底层原理>** 在本次课程中有深入讲解7个传播行为. 同时是在源码的角度讲解的.

插句题外话,对于初学者来讲一些初级或者刚工作的同学,刚开始没有合适的书籍或者是资源,那么学习过程适非常痛苦的。我整理的部分书籍开源项目前已经有200+并持续更新,并且我也可以亲自指导学习Java,对于想入门的同学很有帮助:

技术github学习地址:https://github.com/codeGoogler/JavaCodeHub
程序员编程书籍:https://github.com/codeGoogler/

初学者如何找到优秀的资源

  • 海量互联网大厂面试真题详解与大家分享,共同学习。
  • 职业规划、简历指导
  • Java实用书籍
  • 各种Java学习视频
  • 技能的学习,思维的培养
  • 感兴趣的小伙伴可以关注一下我的账号 @码农突击

或者 添加我微信:codeinfo2014
附赠:10G开发相关电子书,总有一款适合你。

【UG\NX二次开发】多个带ui的dll怎么整合到一个dll NX二次开发-群精选」专栏收录了那些曾散落在聊天对话框里的精彩的知识分享,这都是被遗落的宝贵财富。让我们一起向大佬学习,充满激情地进步,不断超越自己。底部联系方式,欢迎您加入一起交流。有大佬知道多个带ui的dll怎么整合到一个dll吗。 阅读详情

相关推荐

CentOS7下NFS共享报错RPC问题的3种解决方案(含防火墙配置详解)

本文详细解析了CentOS7下NFS共享报错RPC问题的3种解决方案,包括防火墙配置详解。从基础连通性检查到RPC服务状态验证,再到精准开放必要端口和SELinux集成,提供全面的排查与解决指南,帮助用户快速解决'No route to host'等常见问题。

weixin_29274969的博客 452

事务的传播行为-怎么理解

// UserServiceImpl.java文件     @Override @Transactional public void createUser(User user){ userDao.insert(user); this.createUser2(user); //此处调用应该抛出异常才对啊? } @Override @Transactional(propagati

541

WRF气象建模实战:如何为JRA55非标准数据定制Vtable文件?

本文详细介绍了为WRF气象模型定制Vtable文件以支持JRA55非标准数据(特别是积雪数据)的完整实战流程。文章深入解析了WPS数据流中Vtable的核心映射逻辑,提供了从GRIB文件诊断、Vtable编写到METGRID.TBL调优的通用方法论,帮助用户解决非标准气象数据源适配的关键技术挑战。

c8d9e0f1的博客 673

Spring事务(二)-事务的传播行为

由来 ‘“事务的传播行为”,听起来就好高大上的感觉。其实上一篇事务回顾也是为了给这个做铺垫的,我们已经知道事务是怎么回事了,但是得把这个概念真正转换到代码上。我们写代码都知道有controller、service、dao这三层,请求过来先是到达了controller,然后controller去调用service、service再去调用dao。 业务场景 ① 假设service1里有一个hello方...

长风破浪会有33的博客 1482

海天注塑机弘讯控制器Modbus数据采集实战指南

工业设备数据采集是MES系统、设备监控和工艺追溯的基础,其中注塑机联网是车间数字化的关键环节。Modbus协议作为工业通信的事实标准,以简单、开放、低成本的优势,成为海天注塑机弘讯控制器对外提供数据的主要方式。理解控制器型号与通信参数、捋清寄存器点位表与字节序规则,是稳定采集的前提。通过RS485串口或以太网轮询,可以实时获取产量、温度、压力、报警等关键数据,进而支撑OEE统计、质量追溯与异常监控。本文基于实战项目,以海天注塑机弘讯控制器为例,梳理从接线、参数配置到点位验证的完整流程,为现场工程师提供一套可

weixin_28733777的博客 903

ROS 2 Slam Toolbox实战:从零跑通2D激光建图

SLAM(同步定位与地图构建)是移动机器人实现自主导航的基础技术,其核心在于通过传感器数据实时估计位姿并构建环境栅格地图。slam_toolbox作为ROS 2 Humble及后续LTS版本官方主推的2D SLAM后端,采用图优化+闭环检测架构,兼顾实时性、鲁棒性与工程可维护性。相比cartographer和hector_slam,它原生支持ROS 2、参数精简、诊断友好,特别适合硬件资源有限、缺乏IMU或深度相机的差速机器人平台。本文聚焦真实部署场景,覆盖RPLIDAR等常见2D激光雷达与TurtleBo

weixin_30596165的博客 355

事务的特性,事务的隔离级别和传播行为,为什么要有隔离级别

事务(Transaction)概念:一个sql语句就是一个事务,事务可以保证一组sql语句要么都成功,要么都失败。事务,就是一组操作数据库的动作集合。事务是现代数据库理论中的核心概念之一。如果一组处理步骤或者全部发生或者一步也不执行,我们称该组处理步骤为一个事务。当所有的步骤像一个操作一样被完整地执行,我们称该事务被提交。由于其中的一部分或多步执行失败,导致没有步骤被提交,则事务必须回滚到最初的系...

可爱又淘气的小猫咪 1896

基于STM32的坐姿矫正与久坐提醒系统 | 保姆式教程 开源可复刻

本项目基于STM32F103C8T6主控,搭配MPU6050六轴姿态传感器、HC-SR04超声波测距模块,完整实现了坐姿矫正与久坐提醒系统的全流程开发,从多传感器数据采集、数字滤波、姿态解算、坐姿判断到多模式提醒,全流程无跳步保姆式拆解,配套逐行注释可直接编译的开源代码,新手跟着步骤一步步操作,就能顺利完成项目复刻

ZhongWeiXiang9的博客 437

Spring中的事务传播行为

前言:在Spring中,我们可以通过声明式事务,实现对数据库操作的事务管理。其中,在声明式事务时,有一个事务的属性为propagation,即事务的传播行为。今天,就来讨论该属性的作用。 什么是事务的传播行为?        首先,事务的传播行为,可以拆成两部分理解,即事务的传播,和事务的行为。指的是,当有两个或以上的方法同时声明为事务方法(事务方法:即加了事务管理的增删改方法)时,如果在一次程序执行过程中,这些事务方法彼此间相互调用,

qq_43719791的博客 3536

别再为reg2icg的setup违例头疼了!手把手教你用ICC2/Innovus这3招搞定(附实战数据对比)

本文详细介绍了在ICC2/Innovus中解决reg2icg的setup违例的三种高效方法,包括早期时钟树预估、精准控制时钟延迟与门控检查以及ICG专用优化选项组合。通过实战数据对比,展示了不同策略的效果差异,帮助工程师快速优化时序路径,提升芯片性能。

weixin_42569329的博客 404

Mamba与iTransformer融合:时间序列预测中的曼巴注意力机制创新实践

本文探讨了Mamba与iTransformer融合在时间序列预测中的创新实践,重点介绍了曼巴注意力机制的设计与优势。通过双路径信息流设计,该方案在保持O(n)复杂度的同时,显著提升了预测精度和训练效率。实验证明,混合架构在电力负荷、气象数据等多变量长序列场景中表现优异,预测误差降低至0.083,内存占用仅4.2GB。

weixin_29292535的博客 219

事务的传播行为

1.PROPAGATION_REQUIRED 两个方法A,B开启Transactional.REQUIRED,当A调用B时,判断当前线程已经有事务,就不会再创建,底层通过ThreadLocal进行保存 2.PROPAGATION_SUPPORTS 如果当前线程有事务,则会沿用该事务,如果没有则以无事务执行 3.PROPAGATION_MANDATORY 判断当前线程是否有事务,如果有事务则沿用上一个事务,如果直接访问该方法会抛出异常 应用场景:修改支付状态方法,增加积分方法 4.PROPAGATION_RE

qq_44492826的博客 154

网络工程师教程第6版(2024年最新版)

本书 根据《网络工程师考试大纲》(2024年审定通过)编写,对网络工程师岗位所要求的主要知 识及应用技术进行了阐述。本书主要内容包括数据通信、局域网、无线通信网、网络互连、网络安全、网络操作系统与应用服务器、组网技术、网络管理、网络规划和设计。本书是参加网络工程师考试的必备教材,也可作为网络工程从业人员学习网络技术的教材或日常工作的参考用书。王涛和严体华编写了第2章、第3章和第4章;网络工程师教程(第6版)由清华大学出版社出版,由工业和信息化部教育与考试中心组编,张永刚、王涛、高振江任主编,具体介绍如下。

鹿鸣天涯 6901

阿里三面的事务传播行为到底是什么?

事务传播行为 什么叫事务传播行为?听起来挺高端的,其实很简单。 即然是传播,那么至少有两个东西,才可以发生传播。单体不存在传播这个行为。 事务传播行为(propagation behavior)指的就是当一个事务方法被另一个事务方法调用时,这个事务方法应该如何进行。 例如:methodA事务方法调用methodB事务方法时,methodB是继续在调用者methodA的事务中运行呢,还是为自己开启一个新事务运行,这就是由methodB的事务传播行为决定的。 Spring定义了七种传播行为: ..

SiMenKouDeDaDuFo的博客 153

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

JavaEE进阶 - Spring事务和事务传播机制 - 细节狂魔

同样的代码,我们把 LogInfoService的 addLog 和 UserService 的 addUser方法 ,它们的@Transactional 后面的 事务传播级别的设置删除掉了,其它的代码都不改。项目中设置的隔离级别,就好比是 那 8 w,我们连接的数据库中支持的隔离级别,就好比是 那8k,很明显我们的数据库是无法支持 我们项目中对隔离级别设置的、当整个调用链上,有一个程序里面有多个方法的时候,然后,多个方法相互调用的时候,并且这多个方法,都具有事务的时候,这个情况,就是 事务嵌套的问题。

DarkAndGrey的博客 1993

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

深入分析spring事务传播行为

阿里大牛带你深入分析spring事务传播行为 2019年03月26日 20:56:57 Java高级开发 阅读数:17 标签: JAVA 编程语言 程序员 架构 spring 更多 个人分类: JAVA高级开发 spring框架封装了很多有用的功能和组件,便于在项目开发中快速高效的调用,其中spring的事务使用非常简单,只需要在用到事务的地方加一行注解即可: 1@Transactio...

java_2017_csdn的博客 507

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

阿里大牛带你深入分析spring事务传播行为

spring框架封装了很多有用的功能和组件,便于在项目开发中快速高效的调用,其中spring的事务使用非常简单,只需要在用到事务的地方加一行注解即可:1@Transactional但越是看起来简单的东西,就越多坑,为何如此?不是因为别人造的轮子有问题,而是我们在用轮子的时候,只会用,不知其原理,因而不能在实际使用场景中很好的把握它。spring的事务传播行为在实战中是非常重要的,但90%的人只会@...

weixin_34281537的博客 95

注解@Transactional的传播行为类型有哪些?

事务传播行为(Transaction Propagation Behavior)决定了当一个事务方法调用另一个事务方法时,事务应该如何传播。简单来说,它定义了一个事务在嵌套方法调用中的传播方式。在Spring中,注解提供了强大的事务管理功能,事务传播行为是其重要组成部分。不同的传播行为决定了方法调用时事务的边界如何传播,选择合适的传播行为可以确保事务的一致性和数据的完整性。

良月柒 980

《Spring事务传播行为详解》经典例子 看完这篇,别的不用看了

撸了今年阿里、头条和美团的面试,我有一个重要发现.......>>> ...

在路上2017的专栏 159

自己使用cglib/jdk动态代理实现@Transaction注解(事务管理+事务传播行为)

掘金地址 前言 为什么重复造轮子?   这个轮子是我去年就造了的,当时在上个东家做的是金融相关的,重视数据的一致性。我踩过一个坑(ノへ ̄、),导致我特别想知道这个spring 事务管理怎么做的。 原因一   有一次。博主我负责的一个产品其中一个业务,主要用户使用道具,银行将资金从平台转到用户账上,银行处理成功后,发送MQ消息给我们平台;博主妹子我,写了一个幂等接口,也加了@Transaction(...

qq_29031555的博客 1419

Spring~事务API、事务失效原因、事务传播特性(1)

顾名思义吧, 比如是否是新建的事务, 是否已经提交, 是否已经回滚, 是否完成还有一个最重要的TransactionInterceptor, 而TransactionInterceptor实现了, 表示方法拦截, 当我们要执行配置了事务的方法的时候就会进行方法的拦截,拦截到配置了事务的方法之后就会在下, 对其信息一些加强处理(AOP)大多情况使用注解**@Transactional**实现事务支持的话很方便, 可以配置一些属性。

2401_84046876的博客 1004

jdbctemplate 开启事务_太难了!面试官让我结合案例讲讲自己对Spring事务传播行为的理解...

推荐阅读:马士兵教育2020最新最全版马士兵高并发多线程450分钟教程,【从入门到精通】面试美团被JVM惨虐?阿里P9架构师用500分钟把JVM从入门讲到实战#合集硬核!清华双大佬马士兵VS周志磊把TCP协议、高并发负载均衡、多线程、JVM底层给讲清楚了四十岁的Java程序员活该被淘汰?马士兵给所有Java程序员的忠告,告知当代应届生进大厂的秘诀前言Spring 在 TransactionDefi...

weixin_39654823的博客 120

Spring~事务API、事务失效原因、事务传播特性

这个月马上就又要过去了,还在找工作的小伙伴要做好准备了,小编整理了大厂java程序员面试涉及到的绝大部分面试题及答案,希望能帮助到大家《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!图片转存中…(img-lw5BmGe3-1713333115765)]《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!

2401_84046895的博客 869

从阿里规约看Spring事务

在Spring中,事务有两种实现方式:编程式事务管理使用可实现更细粒度的事务控制。基于Spring AOP实现。其本质是对方法前后进行拦截,然后在目标方法开始之前创建或者加入一个事务,在执行完目标方法之后根据执行情况提交或者回滚事务。申明式事务管理不需要入侵代码,通过@Transactional就可以进行事务操作,更快捷而且简单,且大部分业务都可以满足,推荐使用。管是编程式事务还是申明式事务,最终调用的底层核心代码是一致的1.1.1 编程式事务实现方式。

博学谷狂野架构师的博客 954

Spring事务和事务传播机制

同样的代码,我们把 LogInfoService的 addLog 和 UserService 的 addUser方法 ,它们的@Transactional 后面的 事务传播级别的设置删除掉了,其它的代码都不改。项目中设置的隔离级别,就好比是 那 8 w,我们连接的数据库中支持的隔离级别,就好比是 那8k,很明显我们的数据库是无法支持 我们项目中对隔离级别设置的。当整个调用链上,有一个程序里面有多个方法的时候,然后,多个方法相互调用的时候,并且这多个方法,都具有事务的时候,这个情况,就是 事务嵌套的问题。

kim的博客 494

Spring事务传播机制,看完这篇你就明白了

Java架构进阶面试及知识点文档笔记这份文档共498页,其中包括Java集合,并发编程,JVM,Dubbo,Redis,Spring全家桶,MySQL,Kafka等面试解析及知识点整理Java分布式高级面试问题解析文档其中都是包括分布式的面试问题解析,内容有分布式消息队列,Redis缓存,分库分表,微服务架构,分布式高可用,读写分离等等!互联网Java程序员面试必备问题解析及文档学习笔记Java架构进阶视频解析合集《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》

2301_79055239的博客 740
上一篇: 做了五年的开发,一面试竟然还不知道Zab协议?
下一篇: 阿里架构师深剖线程池内部工作原理
84696zuoguwz
博客等级 码龄5年 12粉丝 13原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值