Spring Aop对本地事务的影响

1.@Transactional声明式事物也是基于aop实现的,public方法加了@Transactional注解后,已经成功的创建了事务,但是当前方法仍在方法拦截器中

2.业务方法发生异常之后的处理

判断回滚条件:

 如果自定义了RollbackRuleAttribute列表,如果当前异常匹配到,则回滚(RollbackRuleAttribute默认是RuntimeException),其他异常不会回滚。

满足回滚条件,那么当前事务执行回滚操作

未满足回滚操作,那么当前事务可能被回滚,可能被提交。例如当前事务的rollbackOnly为true,依然执行回滚操作。当然如果未能满足回滚条件的话,即使该事务抛出异常,依然会被提交。

例如:A类的service层的某个方法中调用B类service层的对象方法,B类中方法被A类中的方法调用后,B类方法的事务已经提交,但是spring却把B类方法的事务标记为rollback-only,A类方法的外层事务管理器再commit时就会抛此异常。(可以设置globalRollbackOnParticipationFailure=false解决,该配置默认是true)。

B.既然声明式事务也是aop,所以当@Transactional跟其他切面(如@Asyn或其他拦截器MethodIntercepter)同时使用时,需要考虑@Order属性【切面设置,没有设置取默认值】,,是按照切面的Order顺序来执行的:Order值越小,那么切面越先执行(越后结束).【如果Order相同,则是按照切面字母的顺序(自然排序)来执行切面】

假设都使用默认值(@Transactional的Order值是Integer.MAX_VALUE(拦截器不指定时的默认值).@Aysn的值是OrderInteger.MIN_VALUE,如果Order一样,按照字母顺序排序【排序越后的越后执行,越先执行完】,另外SpringAop会先扫描事务拦截器,(自定义拦截器在事务拦截器后面)所以自定义拦截器不会影响事务【事务拦截开始-自定义拦截开始-自定义拦截结束-自定义拦截结束】)

所以不考虑Order的情况下(自定义切面不设置order),自定义aop对本地事务的影响

1.@Before 不会,因为还没执行到service的业务逻辑

2.@After 报错会影响事务回滚

3.@AfterReturning 报错会影响事务回滚

4.@Around  以Object o=pjp.proceed()为界,之前的代码不会影响事务回滚,之后的代码会影响事务回滚.

切面

@PointCut() 连接点

@Before() 前置通知

@Around() 环绕通知

@After() 最终通知

@AfterReturn() 后置通知

@AfterThrow() 异常通知

无异常情况下执行顺序为:

环绕通知开始->前置通知->环绕通知.proceed()->环绕通知结束->最终通知->后置通知

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/14626.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

EI会议的最佳论文奖是什么?如何申请?

EI会议的最佳论文奖通常是指在EI(工程索引,Engineering Index)收录的学术会议中,评选出的表现最优秀的论文奖项。以下是关于该奖项的一些基本信息及申请步骤: 最佳论文奖的含义 评选标准:最佳论文奖通常基…

多线程、进程、线程五种状态、synchronized、volatile、Lock、CAS、死锁、ThreadLocal

1、并发编程 并发编程三要素 原子性:只一个操作要么全部成功,要么全部失败可见性:一个线程对共享变量的修改,其他线程能够立刻看到有序性:程序执行的顺序按照代码的先后顺序执行 synchronized,Lock解决原…

前端vue 动态加载ts文件,动态调用ts内的方法

业务场景: 在某个业务场景中, 我们需要在数据库配置ts文件路径,和需要调用的函数名称, 前端需要再指定的场景下,触发对应的函数, 并执行处理逻辑,返回结果. 实现: 这是一个数据库配置生成的动态表单 动态校验的例子, 需要引用动态的函数校验 任意一个js文件, common1.ts c…

大模型日报|今日必读的 13 篇大模型论文

大家好,今日必读的大模型论文来啦! 1.MIT新研究:并非所有语言模型特征都是线性的 最近的研究提出了线性表征假说:语言模型通过操作激活空间中概念(“特征”)的一维表征来执行计算。与此相反,来…

CHI dataless 传输——CHI(4)

上篇介绍了read的操作类型,本篇我们来介绍一下dataless 目录 一、dataless操作概览 二、Non-CMO (Non-Cache Maintenance Operation) 1、CleanUnique 2、StashOnce and StashOnceSep 3、Evict 三、CMO (Cache Maintenance Operation) 一、dataless操作概览 名…

C# 中的 Dictionary<TKey, TValue> 类

Dictionary<TKey, TValue> 是 C# 中的一个泛型集合类,它提供了一种键值对的存储结构,可以用来存储和快速访问数据。它的主要特点如下: 键值对结构: Dictionary 中的每个元素都是一个键值对,键必须是唯一的,值可以重复。 快速访问: Dictionary 基于哈希表实现,可以提供 O…

大白话聊聊MySQL查询之五子句(知识简单但重要)

前言&#xff1a; 在日常开发中&#xff0c;查询数据占很大的比重&#xff0c;在使用 MySQL 数据库进行查询时&#xff0c;我们经常需要通过各种条件和规则来筛选和排序数据。要实现这些功能&#xff0c;就不得不使用以下这些子句&#xff1a;WHERE、ORDER BY、GROUP BY、HAVI…

物联网层次架构设计

物联网可以分为三个层次&#xff0c;底层是用来感知数据的感知层&#xff0c;即利用传感器、二维码、RFID等设备随时随地获取物体的信息。第二层是数据传输处理的网络层&#xff0c;即通过各种传感网络与互联网的融合&#xff0c;将对象当前的信息实时准确地传递出去。第三层则…

忍の摸头之术游戏娱乐源码

本资源提供给大家学习及参考研究借鉴美工之用&#xff0c;请勿用于商业和非法用途&#xff0c;无任何技术支持&#xff01; 忍の摸头之术游戏娱乐源码&#xff0c;抖音上面非常火的摸头杀画面,看得我眼花缭乱,源码拿去玩吧&#xff1b; 目录说明 忍の摸头之术&#xff1a;域…

轻松同步:将照片从三星手机传输到iPad的简便方法

概括 想要在新 iPad 上查看三星照片吗&#xff1f;但是&#xff0c;如果您不知道如何将照片从三星手机传输到 iPad&#xff0c;则无法在 iPad 上查看图片。为此&#xff0c;本文分享了 7 个有用的方法&#xff0c;以便您可以使用它们在不同操作系统之间轻松发送照片。现在&…

EfficientSAM分割对象后求其中图像中的高

1 分割对象 EfficientSAM https://github.com/yformer/EfficientSAM 2 计算在图像中最高点即y值最小点 import os import cv2def read_images(folder_path):image_files [f for f in os.listdir(folder_path) iff.endswith(".jpg") or f.endswith(".png&quo…

c语言之运算符练习题

C语言中的运算符是执行特定操作的符号&#xff0c;它们是编程中不可或缺的部分。C语言提供了多种类型的运算符&#xff0c;包括算术运算符、关系运算符、逻辑运算符、位运算符、赋值运算符等。以下是一些常见的C语言运算符练习题&#xff0c;可以帮助你熟悉和练习这些运算符的使…

虚拟化技术[1]之服务器虚拟化

文章目录 虚拟化技术简介数据中心虚拟化 服务器虚拟化服务器虚拟化层次寄居虚拟化裸机虚拟化VMM无法直接捕获特权指令解决方案 服务器虚拟化底层实现CPU虚拟化内存虚拟化I/O设备虚拟化 虚拟机迁移虚拟机动态迁移迁移内容&#xff1a;内存迁移迁移内容&#xff1a;网络资源迁移迁…

小短片创作-组装场景(一)

1、项目基础设置 通过第三人称模板&#xff0c;创建1个项目 1.自动曝光&#xff1a;关闭&#xff0c;因为要做专业的小短片&#xff0c;曝光需要手动控制。 2.扩展自动曝光中的默认亮度范围&#xff1a;启用 3.全局光照系统&#xff1a;选择屏幕空间光照&#xff08;SSGI&am…

Transformer详解常见面试问题

文章目录 1. 各模块解决1.1 输入部分1.2 多头注意力&#xff08;作者使用8个头&#xff09;1.3 残差和LayerNorm1.4 Decoder部分 2.Transformer经典问题2.1 tranformer为何使用多头注意力机制&#xff1f;2.2 Transformer相比CNN的优缺点2.3 Encoder和decoder的区别&#xff1f…

Spring中RestTemplate用法

系列文章目录 文章目录 系列文章目录前言 前言 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站&#xff0c;这篇文章男女通用&#xff0c;看懂了就去分享给你的码吧。 RestTemplate 是从…

自编译frida得一些记录

frida编译 这个过程坑肯定很多 但是只要大方向对得&#xff0c;解决掉每个小错误达到目的就ok得 # 就是想自己把frida代码done下来改一改 然后看看git clone gitgithub.com:frida/frida.git git fetch git checkout 14.1.3# 下载node包管理工具 apt install nvm nvm install …

Web Speech API(1)—— SpeechRecognition

Web Speech API 使你能够将语音数据合并到 Web 应用程序中。Web Speech API 有两个部分&#xff1a;SpeechSynthesis 语音合成&#xff08;文本到语音 TTS&#xff09;和 SpeechRecognition 语音识别&#xff08;异步语音识别&#xff09;。 SpeechRecognition 语音识别通过 S…

axios案例应用

1、Spring概述 Spring 是分层的 Java SE/EE 应用 full-stack 轻量级开源框架&#xff0c;以 IoC(Inverse Of Control: 反转控制)和 AOP(Aspect Oriented Programming:面向切面编程)为内核&#xff0c;提供了展现层 Spring MVC 和持久层。Spring JDBC 以及业务层事务管理等众多…

day16|二叉树的属性

相关题目 ● 104.二叉树的最大深度 559.n叉树的最大深度 ● 111.二叉树的最小深度 ● 222.完全二叉树的节点个数 二叉树的深度与高度 如图&#xff0c; 二叉树的深度表示&#xff1a;任意一个叶子节点到根节点的距离&#xff0c;是从上往下计数的&#xff0c;因此使用前序遍历…