SpringBoot--@Transactional 和 @Cacheable的执行顺序

原文网址:SpringBoot--@Transactional 和 @Cacheable的执行顺序_IT利刃出鞘的博客-CSDN博客

简介

本文介绍@Transactional 和 @Cacheable标注在同一个方法上时的执行顺序。

简述

如果一个方法上同时存在 @Transactional 和 @Cacheable ,且没有指定事务切面和缓存切面的 Order,那么先执行 @Cacheable 对应的切面,再执行 @Transactional 对应的切面。

详解

Spring里如果一个方法存在多个切面,是按照切面的 Order 顺序来执行的:Order 值越小,那么切面越先执行(越后结束)。

@Transactional 和 @Cacheable 都是通过 AOP 来实现的,@Transactional 和 @Cacheable分别对应了一个切面。

  1. 如果不指定事务切面和缓存切面的 Order,它们的 Order 都将是默认值(Integer.MAX_VALUE),即最小优先级。
  2. 如果两个切面 Order 相同,按照切面的字母顺序来执行。

所以:如果一个方法上同时存在 @Transactional(对应切面为 TransactionInterceptor)和 @Cacheable (对应切面为 CacheInterceptor),且没有指定事务切面和缓存切面的 Order。那么因为 CacheInterceptor 的字母顺序在 TransactionInterceptor 之前,所以先执行 @Cacheable 对应的切面,再执行 @Transactional 对应的切面。

那么如何指定缓存切面或者事务切面的 Order ?

上边是文章的部分内容,为统一维护,全文已转移到此网址:SpringBoot-@Transactional 和 @Cacheable的执行顺序 - 自学精灵

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

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

相关文章

【兆易创新GD32H759I-EVAL开发板】 移植LVGL

为什么最终选择了 LVGL? 经过比较多种主流的界面设计软件,emWin 开发方便 ,但是没有开放源码 所以感觉不太自由; TouchGFX目前仅限于STM32用, 应用范围小; ThreadX 的配套GUI GUIX 这个用起来感觉确…

《Linux运维总结:基于银河麒麟V10+ARM64架构二进制部署elasticsearch7.17.21集群 + kibana(方案三)》

总结:整理不易,如果对你有帮助,可否点赞关注一下? 更多详细内容请参考:Linux运维实战总结 一、背景 elasticsearch是一个分布式、实时、高性能的搜索和分析引擎,它广泛应用于企业级搜索、日志分析、实时数据处理等领域。随着elasticsearch的广泛应用,安全性变得越来越重…

ArcGI基本技巧-科研常用OLS, GWR, GTWR模型实现

ArcGI基本技巧-科研常用OLS, GWR, GTWR模型实现 OLS,GWR,GTWR回归模型均可以揭示解释变量对被解释变量的影响且可以进行预测。Ordinary Least Squares (OLS)是最小二乘法,Geographically Weighted Regression (GWR)是地理加权回归,Geographically and T…

Unity射击游戏开发教程:(18)添加弹药计数+补充弹药

添加简单的弹药计数 我将讨论如何向游戏中添加简单的弹药计数。这将包括在 HUD 中添加弹药计数器,当弹药达到 0 时,文本会将颜色更改为红色以提醒玩家。另外,当弹药数为0时,玩家将无法再射击。让我们深入了解吧! 在播放器脚本中我们需要添加一些变量。我们将创建两个公共整…

详细分析Python中的win32com(附Demo)

目录 前言1. 基本知识2. Excel3. Word 前言 对于自动化RPA比较火热,相应的库也比较多,此文分析win32com这个库,用于操作office 1. 基本知识 Win32com 是一个 Python 模块,是 pywin32 扩展的一部分,允许 Python 代码…

C语言如何删除表中指定位置的结点?

一、问题 如何删除链表中指定位置的结点? 二、解答 删除链表中指定的结点,就像是排好队的⼩朋友⼿牵着⼿,将其中⼀个⼩朋友从队伍中分出来,只需将这个⼩朋友的双⼿从两边松开。 删除结点有两种情况: (1&am…

HTML静态网页成品作业(HTML+CSS)——我的家乡江永网页设计制作(1个页面)

🎉不定期分享源码,关注不丢失哦 文章目录 一、作品介绍二、作品演示三、代码目录四、网站代码HTML部分代码 五、源码获取 一、作品介绍 🏷️本套采用HTMLCSS,未使用Javacsript代码,共有1个页面。 二、作品演示 三、代…

mysql -- WITH RECURSIVE 语法

引言 在 SQL 中,WITH RECURSIVE 是一个用于创建递归查询的语句。它允许你定义一个 Common Table Expression (CTE),该 CTE 可以引用自身的输出。递归 CTE 非常适合于查询具有层次结构或树状结构的数据,例如组织结构、文件系统或任何其他具有…

Pencils Protocol Season 2 收官在即,Season 3 携系列重磅权益来袭

此前Scroll生态LaunchPad &聚合收益平台Pencils Protocol(原Penpad),推出了首个资产即其生态代币PDD的Launch,Season 2活动主要是用户通过质押ETH代币、组件战队等方式,来获得Point奖励,并以该Point为依…

2024 Google I/O大会:全方位解读最新AI技术和产品

引言: 2024年的Google I/O大会如期举行,作为技术圈的年度盛事之一,谷歌展示了其在人工智能领域的最新进展。本次大会尤其引人注目,因为它紧随着OpenAI昨天发布GPT-4o的脚步。让我们详细解析Google此次公布的各项新技术和产品&…

svn如何远程访问?

svn(Subversion)是一种版本控制系统,广泛应用于软件开发领域。它能够追踪文件和目录的变化,记录每个版本的修改内容,并允许多人协同开发。svn的远程访问功能允许开发人员可以在不同的地点访问和管理代码,提…

正点原子[第二期]Linux之ARM(MX6U)裸机篇学习笔记-15.7讲 GPIO中断实验-编写按键中断驱动

前言: 本文是根据哔哩哔哩网站上“正点原子[第二期]Linux之ARM(MX6U)裸机篇”视频的学习笔记,在这里会记录下正点原子 I.MX6ULL 开发板的配套视频教程所作的实验和学习笔记内容。本文大量引用了正点原子教学视频和链接中的内容。…

typescript -元组类型

元组类型 元组表示有限元素构成的有序列表。元组类型是数组类型的子类型。元组是长度固定的数组,元组总每个元素都有具体的类型 元组的定义 [T0, T1, T2,...,Tn] const point: [number,number] [0, 0]只读元组 使用readonly修饰符或者Readonly工具类型 readon…

分布式websocket实时通讯的session共享问题

目录 1.需求 2.前置条件和要求 3.方案分析 3.1.方案1:session共享存储到redis数据库 3.2.方案2:采用mongo生命周期的AbstractMongoEventListener 3.3.方案3:引入redis等MQ组件,发送广播消息 3.4.方案4:采用chan…

AI4Science

AI4Science 文章目录 AI4ScienceMicroSoft AI4Science其它 微软研究院刘铁岩:AI for Science,追求人类智能最光辉的一面|MEET2023 (17min) https://www.bilibili.com/video/BV1bs4y1W7rW/AI Forum 2023 | AI4Science: …

html使用<el-table-column />时不能正常渲染出页面

一、bug开始了 <el-table-column prop"date" label"Date" width"180"/>当使用上述代码进行html渲染时&#xff0c;发现没有正常渲染出想象中的视图&#xff0c;乱七八糟地。 二、bug解决 在IDE中报了如下警告&#xff1a; Empty tag do…

EasyCVR智慧校园建设中的关键技术:视频汇聚智能管理系统应用

一、引言 随着信息技术的迅猛发展&#xff0c;智慧校园作为教育信息化建设的重要组成部分&#xff0c;对于提升校园安全、教学效率和管理水平具有重要意义。本文旨在介绍智慧校园视频管理系统的架构设计&#xff0c;为构建高效、智能的校园视频监控系统提供参考。 二、系统整…

机器学习之sklearn基础教程(第三篇:模型选择和评估)

机器学习之sklearn基础教程&#xff08;第三篇&#xff1a;模型选择和评估&#xff09; 1. 模型选择 在机器学习任务中&#xff0c;选择合适的模型是非常重要的。不同的模型适用于不同的问题类型和数据特征。 在模型选择过程中&#xff0c;有几个常用的方法和原则&#xff1a;…

Vitis HLS 学习笔记--资源绑定-使用URAM(1)

目录 1. 简介 2. 代码分析 2.1 存储器代码 2.2 Implementation报告 2.3 存储器类型指定 2.4 存储器初始化 3. 总结 1. 简介 在博文《Vitis HLS 学习笔记--资源绑定-使用URAM-CSDN博客》中&#xff0c;介绍了如何在Vitis HLS环境下设计一个简易的存储器模型。 通过以下…

gin自定义验证器+中文翻译

gin自定义验证器中文翻译 1、说明2、global.go3、validator.go4、eg&#xff1a;main.go5、调用接口测试 1、说明 gin官网自定义验证器给的例子相对比较简单&#xff0c;主要是语法级别&#xff0c;便于入门学习&#xff0c;并且没有给出翻译相关的处理&#xff0c;因此在这里记…