@AfterReturning 方面在切入点方法的同一事务中执行?

2024-07-01

我需要在执行函数后执行任务。我为此使用了 Aspect。但我有些困惑。

我在 Spring 服务中有一个函数 A() 。

@Transactional(readOnly = false,
               isolation = Isolation.DEFAULT,
               propagation = Propagation.REQUIRED,
               rollbackFor = {Exception.class})
void A() {
 //Do Something
}

我有一个@Afterreturning关于此功能的方面。

 @AfterReturning(pointcut = "execution(Sevice.saverecord(..)) ")
 public void processNotifications(JoinPoint jp) {}

我想知道这个方面是否会使用方法A()的事务,或者它会自动创建一个新事务。因为我没有在这方面方法上定义任何事务。

我尝试在两种方法中使用 TransactionAspectSupport.currentTransactionStatus().toString() 打印交易详细信息。我得到了两个不同的 ID。

有人能解释一下这是否意味着有两笔交易,如果是的话,第二笔交易来自哪里?


Yes the @AfterReturning方面与建议方法在同一事务中执行。

调用事务方法时的执行顺序如下图所示(参考弹簧docs http://docs.spring.io/autorepo/docs/spring/current/spring-framework-reference/html/transaction.html#tx-decl-explained)

方面(即定制顾问) 可以配置为在事务建议之前或之后运行,默认情况下是after.

有关如何配置自定义顾问程序以在事务建议之前运行的进一步参考,请使用Ordered http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/core/Ordered.html如上所述here http://docs.spring.io/autorepo/docs/spring/current/spring-framework-reference/html/transaction.html#transaction-declarative-applying-more-than-just-tx-advice.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

@AfterReturning 方面在切入点方法的同一事务中执行? 的相关文章

随机推荐

  • Python pandas - 根据集体 NaN 计数删除组

    我有一个基于不同气象站的多个变量 温度 压力等 的数据集 stationID Time Temperature Pressure 123 1 30 1010 5 123 2 31 1009 0 202 1 24 NaN 202 2 24 3
  • 画笔和钢笔使用指南

    制作 GDI 画笔和钢笔有多贵 我应该在添加所需的基础上创建它们并将它们包装在 using 中以便快速处理它们 还是应该创建一个类似于 System Drawing Brushes 类的静态类 IMO 它们足够高效 您通常不应该创建在多个方
  • 使用按键选择 PrimeNG 表上的行

    我正在使用 PrimeNG 表 并尝试选择pSelectableRow通过按键 我有一个全局搜索输入 它将过滤表的所有结果 当用户完成搜索时 我希望他们能够单击键盘上的按钮并从过滤的选项中选择行 目前 如果用户正在搜索并且输入框获得焦点 则
  • Mac 上缺少 spring-boot-starter-web hibernate-validator 依赖项

    我在STS Spring工具套件 上创建了Spring Boot项目 Spring Starter Project Window和Mac都有 这是我的pom xml
  • 尝试创建测试时注入自动装配依赖项失败

    我正在尝试创建一个junit测试存储库 我得到了这个很好的异常 完全例外 org springframework beans factory BeanCreationException Error creating bean with na
  • 多处理冻结计算机

    我通过使用多处理提高了执行时间 但我不确定 PC 的行为是否正确 它会冻结系统 直到所有进程完成 我使用的是 Windows 7 和 Python 2 7 也许我做错了 这就是我所做的 def do big calculation sub
  • 解析 Apple Mach O-Linker 错误?

    我正在使用解析框架 突然出现 39 个错误 即使我删除框架 它仍然有错误 我已经检查了构建阶段 设置和路径 但没有任何效果 另外 我正在使用 xcode 4 6 3 我有一台过时的 macbook Ld Users anikakablan
  • 修改 %in% 运算符以查找列表中的对象

    我必须修改 in 运算符将在列表中查找对象 我有一个清单 list1 lt list c 5 6 6 list 2 c 5 6 string 未修改 in 测试这些值后的运算符 c 5 6 in list1 6 in list1 2 in
  • ggplot2 每个美学的多个尺度/图例,重新审视[重复]

    这个问题在这里已经有答案了 我有一个例子 我想使用 ggplot 突出显示序列比对的几个属性 我正在使用 geom tile 并希望为两个分数属性提供两组不同颜色的图块 我只能想象一个 我意识到每种审美的一个尺度的限制 以及其背后的逻辑 h
  • 选择数据结构

    根据需求使用不同的数据结构 但我如何知道应该使用哪种数据结构 我只是想知道如何选择合适的数据结构 谢谢 此流程图适用于 C 中的 STL 但您可以用 C 实现 STL 容器支持的任何数据结构 列表是一个链接列表 Vector是一个动态数组
  • 检测 Citrix“应用程序模式”?

    请原谅我可能用错了这个 应用程序模式 的术语 我们的应用程序在启动过程中遇到问题 直到主窗口打开后才显示任务栏图标 即使在此之前屏幕上有加载进度窗口 登录窗口等 我们更改代码来修复此问题 但不幸的是 当通过 citrix 运行应用程序时 此
  • 变量值传递到另一个表单,VB.NET

    我确实有两个公共变量 每个变量都来自两种不同的形式 Form1 VB Public UserNo As String Form2 VB Public MyUserNo As String 在我的 Form2 VB 文件中 我为 Form1
  • Android 6.0 中的打瞌睡和应用程序待机模式

    Google 在 Android 6 0 操作系统中引入了 Doze 和应用程序待机模式 设备将进入Doze如果设备被拔掉并且在一段时间内未使用并且应用程序在一段时间内保持不活动状态 则该应用程序将进入模式StandBy模式 如果我错了请纠
  • Android Fragment 后台事务

    我正在开发一个带有片段的应用程序 它有一个 JavaScript 接口 在主 Activity 中调用 并具有片段替换逻辑 当应用程序位于前台时 一切正常 但当应用程序位于后台时 片段事务替换不起作用 当我返回应用程序时 我仍然看到旧片段
  • 调用exe中定义的函数

    我需要知道一种从 python 脚本调用 exe 中定义的函数的方法 我知道如何从 py 文件调用整个 exe 除非您的 EXE 是 COM 对象 或者像 dll 那样专门导出某些函数 否则这是不可能的 对于 COM 方法 请查看以下资源
  • Elasticsearch 字段名称区分大小写

    我正在寻找有关 ElasticSearch 中字段名称区分大小写的建议和最佳实践 以及是否有全局配置来使字段名称不区分大小写 另外 如果映射中不存在 是否可以禁止 ES 添加不同的字段 这是一个例子来说明这一点 1 使用小写的一个字段 名称
  • Android 自定义进度条不旋转

    我想更改默认动画ProgressBar 所以我在我的主题中添加了自定义样式 样式 xml 我在我的内部调用这种风格ProgressBar具有以下内容 进度条 xml
  • 从 iso 货币符号获取 NativeEnglishName,而不依赖于登录用户的当前文化

    我所拥有的是货币IsoCode EUR 此属性也可以在 RegionInfo 类 gt ri ISOCurrencySymbol 但 RegionInfo 类取决于当前登录的用户 我想要的是获得像 Euro 这样的 NativeEnglis
  • 如何使用 awk 在文本文件的第一行之前添加一个空行

    我有一些文本文件 我想在每个文本文件的第一行之前添加一个空行 我怎样才能用 awk 做到这一点 我会比较喜欢GNU sed对于此任务 要在文件开头添加空格 sed 1s file txt 要使用以下命令对多个文本文件执行此操作 txt扩展名
  • @AfterReturning 方面在切入点方法的同一事务中执行?

    我需要在执行函数后执行任务 我为此使用了 Aspect 但我有些困惑 我在 Spring 服务中有一个函数 A Transactional readOnly false isolation Isolation DEFAULT propaga