spring tx:advice和spring aop切入点的区别

2024-01-03

我是 Spring 新手,具有 Hibernate 的工作知识。 我的工作是使用 Spring 声明式方法来实现事务。在 Google 的帮助下我成功完成了,感谢 Google。但无法清楚地理解我在 application-context.xml 中使用的术语。

1.

 <tx-advice>

</tx-advice>
  1. <aop-config>
        // here is point cut were declared
    </aop-config>
    

有人可以向我解释一下上述观点吗,同时我也试图从谷歌中理解它。


由于您已经成功实施spring transaction,

In Spring我们可以通过三种方式实现事务:

  1. 平台交易管理。
  2. 声明式 http://static.springsource.org/spring/docs/2.0.x/reference/transaction.html#transaction-declarative交易管理。
  3. 程序化 http://static.springsource.org/spring/docs/3.0.x/reference/transaction.html#transaction-programmatic交易管理。

你所实现的称为通过 XML 进行声明式事务管理.

简而言之,你执行了transaction由春天的AOP http://en.wikipedia.org/wiki/Aspect-oriented_programming特征。

耦合tx:advice XML配置与基于 XML 的 AOP 配置可以实现协同组合。例如,我们可以使用方法名称来自动确定我们想要在该方法上应用哪种类型的事务。

Say我们希望将事务应用于所有以以下开头的方法save and modify例如savePizza(),saveColdDrink(),modifyOrder(),modifyBill()。对于这些我们必须定义advice在我们的 xml 文件中:

<tx:advice id="txAdvice" >
  <tx:attributes>
    <tx:method name="save*" propagation="REQUIRED"/>
    <tx:method name="modify*" propagation="REQUIRED"/>
  </tx:attributes>
</tx:advice> 

我们的建议已准备就绪,正如我们通过上面的行所说的那样,我们只希望在以以下开头的方法上进行交易save or modify。现在我们将通过使用来说明哪些 bean 需要上述建议pointcut的元素aop-config。例如,假设我们想要将事务建议应用于所有可用的类com.mytransaction.service包裹。

为此,我们必须在 xml 文件中添加以下行:

<aop:config>
  <aop:pointcut id="allServices"
    expression="execution(*com.mytransaction.service.*.*(..))"/>
  <aop:advisor advice-ref="txAdvice" pointcut-ref="allServices"/>
</aop:config>

简而言之,<tx:advice>意味着要做什么或我们想要应用哪种交易行为。pointcut里面的元素<aop-config>表示我们要在哪里应用交易, 说<aop:advisor advice-ref="txAdvice" pointcut-ref="allServices"/>

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

spring tx:advice和spring aop切入点的区别 的相关文章

  • 如何在 Spring-JUnit 测试中设置 JNDI 查找?

    我正在使用 Maven 3 0 3 Spring 3 1 0 RELEASE 和 JUnit 4 8 1 如何在容器外部创建 JNDI 功能 在我的例子中是 JBoss 我认为 Spring 的 jndiTemplate 可以解决这个问题
  • Pig Udf 显示结果

    我是 Pig 的新手 我用 Java 编写了一个 udf 并且包含了一个 System out println 其中的声明 我必须知道在 Pig 中运行时该语句在哪里打印 假设你的UDF 扩展了 EvalFunc 您可以使用从返回的 Log
  • 如何在 Spring 中禁用使用 @Component 注释创建 bean?

    我的项目中有一些用于重构逻辑的通用接口 它看起来大约是这样的 public interface RefactorAwareEntryPoint default boolean doRefactor if EventLogService wa
  • jQuery AJAX 调用 Java 方法

    使用 jQuery AJAX 我们可以调用特定的 JAVA 方法 例如从 Action 类 该 Java 方法返回的数据将用于填充一些 HTML 代码 请告诉我是否可以使用 jQuery 轻松完成此操作 就像在 DWR 中一样 此外 对于
  • 来自 dll 的 Java 调用函数

    我有这个 python 脚本导入zkemkeeperdll 并连接到考勤设备 ZKTeco 这是我正在使用的脚本 from win32com client import Dispatch zk Dispatch zkemkeeper ZKE
  • 从最终实体获取根证书和中间证书

    作为密码学的菜鸟 我每天都会偶然发现一些简单的事情 今天只是那些日子之一 我想用 bouncy castle 库验证 java 中的 smime 消息 我想我几乎已经弄清楚了 但此时的问题是 PKIXparameters 对象的构建 假设我
  • 检测并缩短字符串中的所有网址

    假设我有一条字符串消息 您应该将 file zip 上传到http google com extremelylonglink zip http google com extremelylonglink zip not https stack
  • Eclipse Maven Spring 项目 - 错误

    I need help with an error which make me crazy I started to study Java EE and I am going through tutorial on youtube Ever
  • jdbc mysql loginTimeout 不起作用

    有人可以解释一下为什么下面的程序在 3 秒后超时 因为我将其设置为在 3 秒后超时 12秒 我特意关闭了mysql服务器来测试mysql服务器无法访问的这种场景 import java sql Connection import java
  • Hibernate 的 PersistentSet 不使用 hashCode/equals 的自定义实现

    所以我有一本实体书 public class Book private String id private String name private String description private Image coverImage pr
  • 像 Java 这样的静态类型语言中动态方法解析背后的原因是什么

    我对 Java 中引用变量的动态 静态类型和动态方法解析的概念有点困惑 考虑 public class Types Override public boolean equals Object obj System out println i
  • 如何对不同的参数类型使用相同的java方法?

    我的问题 我有 2 个已定义的记录 创建对象请求 更新对象请求 必须通过实用方法进行验证 由于这两个对象具有相同的字段 因此可以对这两种类型应用相同的验证方法 现在我只是使用两种方法进行重载 但它很冗长 public record Crea
  • 如何在谷歌地图android上显示多个标记

    我想在谷歌地图android上显示带有多个标记的位置 问题是当我运行我的应用程序时 它只显示一个位置 标记 这是我的代码 public class koordinatTask extends AsyncTask
  • 如何升级 Hibernate 4.3 --> 5.2?

    我用 Google 搜索了一下 但没有看到任何将 Hibernate 升级到 5 2 的教程 我唯一能找到的是 http hibernate org search documentation migrate 5 0 http hiberna
  • 非 Spring 托管类中 DI 的编译时编织

    我想为标记为的类配置编译时编织 Configurable注释能够将 spring 依赖项注入到初始化的类中new操作员 我不想使用加载时编织 因为我无权访问应用程序服务器的运行脚本 因此无法修改它 另外 我希望能够在测试中使用此类 我的意思
  • 干净构建 Java 命令行

    我正在使用命令行编译使用 eclipse 编写的项目 如下所示 javac file java 然后运行 java file args here 我将如何运行干净的构建或编译 每当我重新编译时 除非删除所有内容 否则更改不会受到影响 cla
  • Opencv Java 灰度

    我编写了以下程序 尝试从彩色转换为灰度 Mat newImage Imgcodecs imread q1 jpg Mat image new Mat new Size newImage cols newImage rows CvType C
  • 使用 CXF-RS 组件时,为什么我们使用 而不是普通的

    作为后续这个问题 https stackoverflow com questions 20598199 对于如何正确使用CXF RS组件我还是有点困惑 我很困惑为什么我们需要
  • 使用 svn 1.8.x、subclise 1.10 的 m2e-subclipse 连接器在哪里?

    我读到 m2e 的生产商已经停止生产 svn 1 7 以外的任何版本的 m2e 连接器 Tigris 显然已经填补了维护 m2e subclipse 连接器的空缺 Q1 我的问题是 使用 svn 1 8 x 的 eclipse 更新 url
  • 如何防止在Spring Boot单元测试中执行import.sql

    我的类路径中有一个 import sql 文件 其中包含一些 INSERT 语句 当使用 profile devel 运行我的应用程序时 它的数据被加载到 postgres 数据库中 到目前为止一切正常 当使用测试配置文件执行测试时 imp

随机推荐

  • 如何配置 asp.net kestrel 实现低延迟?

    我正在尝试实现一个 asp net 2 2 应用程序 以尽可能低的速度服务 HTTP 请求latency 不是吞吐量 它不是为了生产而是为了某种竞争 该应用程序应该在具有 4 个核心的 Linux docker 容器环境中运行 并且我的处理
  • 使用 PHP 解压较大的文件

    我正在尝试使用 PHP 解压 14MB 存档 代码如下 zip zip open c kosmas zip while zip entry zip read zip fp fopen c unzip import xml w if zip
  • 将当前用户添加到 NLog 输出

    我想向 NLog 输出的每一行添加一个字符串 逻辑保持不变 尝试获取当前用户 如果成功 则将当前用户添加到输出中 我每次都知道如何实现它 但我想将这个模板设置在一个地方 而不是每次编写时都重复它 The WindowsIdentityLay
  • Spring Boot 应用程序与 ECS 中运行的 AWS Distro for OpenTelemetry (ADOT) 之间的通信失败

    我正在尝试在 ECS 中运行 Spring Boot 应用程序 并使用 ADOT 作为边车 在 ECS 任务定义中 我正在为 Spring Boot 应用程序创建任务 我正在启用 Use Metrics Collection 并选择 Ama
  • ActivityManager进程已死亡问题

    我的应用程序包含 5 个屏幕 在第一个屏幕中 我从服务器加载一些数据 并在第二个屏幕的列表视图中显示这些数据 在列表视图中 我必须为每一行显示一个图像 这些图像是动态下载的并且也被缓存 下载发生在后台 我已经为列表视图提供了notifyDa
  • 如何确定字符串中包含的数据类型?

    我有一个接受字符串参数的方法 字符串可以包含整数 长整型 双精度型 布尔型或只是普通的旧字符和数字 我需要一种简单的方法来确定字符串的类型 一种方法可能是使用一堆 try catch 块并尝试将其解析为每种类型 如果抛出异常 则它可能不是该
  • 单击删除父 div

    我正在尝试通过单击链接来删除 div 问题是相同的 div 和链接有多个结构 我尝试制作一个函数 但它删除了所有 div document on click fd bxx cls function e e preventdefault th
  • 如何修复这个 MySQL 触发器?

    我正在尝试让这个触发器发挥作用 CREATE TRIGGER Transaction insert BEFORE INSERT ON Transaction FOR EACH ROW WHERE Number NEW AccountNumb
  • Go 中生产者/消费者最简洁的习惯用法是什么?

    我想做的是拥有一组生产者 goroutine 其中一些可能完成也可能不完成 和一个消费者例程 问题在于括号中的警告 我们不知道将返回答案的总数 所以我想做的是 package main import fmt math rand func p
  • 如何将 docker 与 drupal 和 drush 一起使用?

    我想用drush https github com drush ops drush 它需要在drupal容器中运行 还有一个drush docker 仓库 https hub docker com r drush drush 但我不知道如何
  • 防止电脑休眠

    我有一个正在播放某种媒体的应用程序 我不希望计算机在我的应用程序运行时进入睡眠状态 我查了一下 发现这个可以通过P Invoke来完成 显示器也不应该关闭 计算机也不应该进入睡眠状态 因此 我做了以下操作来测试这一点 b Click x y
  • Git 从现有远程分支添加工作树

    在我的远程存储库中有 3 个分支 主分支和 2 个长期运行的分支 master the common features are here like Core DAL north customized for A company long r
  • 将 PreviewKeyDown 中收到的密钥转换为字符串

    我在窗口上使用 PreviewKeyDown 事件来接收来自条形码扫描仪的所有键 KeyEventArgs 是一个枚举 没有给我实际的字符串 我不想使用 TextInput 因为某些键可能由控件本身处理 并且可能不会冒泡到 TextInpu
  • Spring Boot 应用程序中没有可用的合格 bean 类型

    运行我的 SpringBoot 应用程序时 出现以下错误 运行时出现异常 null IncationTargetException 创建名称为 bookController 的 bean 时出错 通过字段 bookRepository 表达
  • 提升::精神::气。如何将内联解析器表达式转换为独立语法,以及如何解压它们生成的元组?

    我正在使用 QI 和 Phoenix 我想编写一个返回 4 个布尔值的小语法 这些布尔值将用作语义操作内函数调用的参数 我有几个需要这些东西的函数 到目前为止我已经使用了这种方法 qi bool gt gt qi bool gt gt qi
  • 在 x86 上处理非常大的列表

    我需要处理大量浮点数 但在 x86 系统上遇到了内存限制 我不知道最终的长度 所以我需要使用可扩展类型 在 x64 系统上 我可以使用
  • 如何删除除每小时一条记录之外的所有记录

    我有一个包含数百万条传感器记录的 mysql 表 其结构如下 datanumber auto increment stationid int sensortype int measuredate datetime data medtext
  • TPL Dataflow,Post() 和 SendAsync() 之间的功能区别是什么?

    我对通过 Post 或 SendAsync 发送项目之间的区别感到困惑 我的理解是 在所有情况下 一旦一个项目到达数据块的输入缓冲区 控制权就会返回到调用上下文 对吗 那么为什么我需要 SendAsync 呢 如果我的假设不正确 那么我想知
  • 在 R 中使用 t.test() 时出错 - 没有足够的“x”观测值

    我尝试进行 t test 但它给了我这样的错误 在 R 中使用 t test 时出错 没有足够的 x 观察值 数据只有数值 没有 NA 组的比例是10比35 如何避免这种情况 先谢谢您的帮助 t test data Vrajdeb data
  • spring tx:advice和spring aop切入点的区别

    我是 Spring 新手 具有 Hibernate 的工作知识 我的工作是使用 Spring 声明式方法来实现事务 在 Google 的帮助下我成功完成了 感谢 Google 但无法清楚地理解我在 application context x