如何扩展Spring注解@Transactional

2023-11-27

我必须在我的网络应用程序中使用 3 个不同的事务管理器。所以我根据以下内容编写了自己的注释弹簧参考(第 10.5.6.3 节自定义快捷方式注释)。

一个注释(用于使用一个特定的事务管理器)如下所示:

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

import org.springframework.transaction.annotation.Transactional;

@Target({ElementType.METHOD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Transactional("customer")
public @interface CustomerTX{


}

使用自定义的 @CustomerTX 注释注释我的服务层时,一切正常。但我必须为我的注释提供更多选项,例如 readonly=true、rollbackFor= 等。由于您无法“扩展”注释(我实际上只需要从 Spring 扩展 @Transactional 注释),那么正确的实现是什么?


在 Spring 4 中你可以做到这一点。如中所述文档

还可以组合元注释来创建组合注释。例如,Spring MVC 中的 @RestController 注解由 @Controller 和 @ResponseBody 组成。

此外,组合注释可以选择重新声明元注释中的属性以允许用户自定义。当您只想公开元注释属性的子集时,这尤其有用。例如,Spring 的 @SessionScope 注释将范围名称硬编码为会话,但仍然允许自定义 proxyMode。

@Target({ElementType.TYPE, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Scope(WebApplicationContext.SCOPE_SESSION)
public @interface SessionScope {

    /**
     * Alias for {@link Scope#proxyMode}.
     * <p>Defaults to {@link ScopedProxyMode#TARGET_CLASS}.
     */
    @AliasFor(annotation = Scope.class)
    ScopedProxyMode proxyMode() default ScopedProxyMode.TARGET_CLASS;

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

如何扩展Spring注解@Transactional 的相关文章

  • 如何在 JavaFX 中连接可观察列表?

    我所说的串联是指获得一个新列表 该列表侦听所有串联部分的更改 方法的目的是什么FXCollections concat ObservableList
  • eclipse行号状态行贡献项是如何实现的?

    我需要更新状态行编辑器特定的信息 我已经有了自己的实现 但我想看看 eclipse 贡献项是如何实现的 它显示状态行中的行号 列位置 谁能指点一下 哪里可以找到源代码 提前致谢 亚历克斯 G 我一直在研究它 它非常复杂 我不确定我是否了解完
  • 如何调试“com.android.okhttp”

    在android kitkat中 URLConnection的实现已经被OkHttp取代 如何调试呢 OkHttp 位于此目录中 external okhttp android main java com squareup okhttp 当
  • Android中如何使用JNI获取设备ID?

    我想从 c 获取 IMEIJNI 我使用下面的代码 但是遇到了未能获取的错误cls 它总是返回NULL 我检查了环境和上下文 它们都没有问题 为什么我不能得到Context班级 我在网上搜索了一下 有人说我们应该使用java lang Ob
  • 将巨大的模式编译成Java

    有两个主要工具提供了将 XSD 模式编译为 Java 的方法 xmlbeans 和 JAXB 问题是 XSD 模式确实很大 30MB 的 XML 文件 大部分模式在我的项目中没有使用 所以我可以注释掉大部分代码 但这不是一个好的解决方案 目
  • 断言 Kafka 发送有效

    我正在使用 Spring Boot 编写一个应用程序 因此要写信给 Kafka 我这样做 Autowired private KafkaTemplate
  • 如何在 Spring 中使 @PropertyResource 优先于任何其他 application.properties ?

    我正在尝试在类路径之外添加外部配置属性资源 它应该覆盖任何现有的属性 但以下方法不起作用 SpringBootApplication PropertySource d app properties public class MyClass
  • Sun 在 EDT 之外做 GUI 工作的演示?

    我正在看SplashDemo java http download oracle com javase tutorial uiswing examples misc SplashDemoProject src misc SplashDemo
  • 将人类日期(当地时间 GMT)转​​换为日期

    我正在服务器上工作 服务器正在向我发送 GMT 本地日期的日期 例如Fri Jun 22 09 29 29 NPT 2018在字符串格式上 我将其转换为日期 如下所示 SimpleDateFormat simpleDateFormat ne
  • Java继承,扩展类如何影响实际类

    我正在查看 Sun 认证学习指南 其中有一段描述了最终修饰符 它说 如果程序员可以自由地扩展我们所知的 String 类文明 它可能会崩溃 他什么意思 如果可以扩展 String 类 我是否不会有一个名为 MyString 的类继承所有 S
  • 蓝牙发送和接收文本数据

    我是 Android 开发新手 我想制作一个使用蓝牙发送和接收文本的应用程序 我得到了有关发送文本的所有内容逻辑工作 但是当我尝试在手机中测试它时 我看不到界面 这是Main Activity Code import android sup
  • 如何将 HTML 链接放入电子邮件正文中?

    我有一个可以发送邮件的应用程序 用 Java 实现 我想在邮件中放置一个 HTML 链接 但该链接显示为普通字母 而不是 HTML 链接 我怎样才能将 HTML 链接放入字符串中 我需要特殊字符吗 太感谢了 Update 大家好你们好 感谢
  • 如何区分从 Saxon XPathSelector 返回的属性节点和元素节点

    给定 XML
  • Spring @Cacheable 和 @Async 注解

    我需要缓存一些异步计算的结果 具体来说 为了克服这个问题 我尝试使用 Spring 4 3 缓存和异步计算功能 作为示例 我们采用以下代码 Service class AsyncService Async Cacheable users C
  • Spring Boot中ServletContext初始化后如何创建bean?

    我有一个 bean 它实现 ServletContextAware 和 BeanFactoryPostProcessor 接口 我需要在 ServletContext 完成初始化后将此 bean 注册到 applicationContext
  • 将 JavaFX FXML 对象分组在一起

    非常具有描述性和信息性的答案将从我这里获得价值 50 声望的赏金 我正在 JavaFX 中开发一个应用程序 对于视图 我使用 FXML
  • 使用 HtmlUnit 定位弹出窗口

    我正在构建一个登录网站并抓取一些数据的程序 登录表单是一个弹出窗口 所以我需要访问这个www betexplorer com网站 在页面的右上角有一个登录链接 写着 登录 我单击该链接 然后出现登录弹出表单 我能够找到顶部的登录链接 但找不
  • 在java中以原子方式获取多个锁

    我有以下代码 注意 为了可读性 我尽可能简化了代码 如果我忘记了任何关键部分 请告诉我 public class User private Relations relations public User relations new Rela
  • Java RMI - 客户端超时

    我正在使用 Java RMI 构建分布式系统 它必须支持服务器丢失 如果我的客户端使用 RMI 连接到服务器 如果该服务器出现故障 例如电缆问题 我的客户端应该会收到异常 以便它可以连接到其他服务器 但是当服务器出现故障时 我的客户端什么也
  • 如何更改 Spring OAuth2 上的response_type

    这是我使用 Instagram 进行 OAuth2 登录的配置 instagram client clientId clientId clientSecret clientSeret accessTokenUri https api ins

随机推荐

  • 使用实体框架从存储过程中检索表数据

    我正在使用实体框架 v6 我有一个存储过程 如下所示 CREATE PROCEDURE dbo GetCountryList CustomerName VARCHAR MAX SearchCriteria VARCHAR MAX AS BE
  • 使用 Android NDK 和 C++

    我让示例 HelloJni 项目正常运行 它使用 C 文件作为本机代码 我无法获得任何使用 C 的简单示例 采取以下 JNI 代码 include
  • 有没有办法在 HTML/JavaScript 中指定多个图像源?

    有没有一种方法可以告诉浏览器查看图像 URL 列表 直到找到一个有效的 URL 纯 HTML 是首选 但我猜这里可能需要 JavaScript 我已经在使用 JQuery 所以这不是问题 编辑 感谢您的回答 我将添加一些说明 我所说的 作品
  • 仅当浏览器为 Firefox 时才使用 javascript 隐藏 html 元素

    如果浏览器仅限火狐浏览器 如何使用javascript隐藏div 检查 Firefox 浏览器 Javascript var FIREFOX Firefox i test navigator userAgent if FIREFOX doc
  • 编译失败,并显示“创建共享对象时不能使用针对‘.rodata.str1.8’的重定位 R_X86_64_32”

    我正在尝试从 VPS 中的 makefile 编译此源代码 但它不起作用 VPS 是 64 Cent 操作系统 这是完整的错误 make gcc c O3 w DLINUX I SDK amx SDK amx c g c O3 w DLIN
  • 将字典插入Python堆

    我正在尝试使用 键 值 构建一个堆 因此键是数字 值是字典 import heapq heap dic val 1 number 1 val 2 number 2 val 3 number 3 insetToHeap 2 dic heapq
  • 访问相邻组件/字段的最佳方式

    我正在寻找一种访问组件 字段的方法 这些组件 字段要么与访问的项目位于同一项目数组中 要么甚至仅位于同一父项目数组中 最后一个只是一个选项 在 ExtJS3 中 这很容易 只需定义一个ref在所有者容器中 但我没有在 ExtJS4 中找到类
  • R 根据行中的值在列中重复

    我有一个如下所示的数据框 Name School Weight Days Antoine Bach 0 03 5 Antoine Ken 0 02 7 Barbara Franklin 0 04 3 我想获得如下输出 Name School
  • Python sys.path - 附加 PYTHONPATH

    开始之前 我已经尝试完成它有一段时间了 但我没有运气 我正在尝试创建自己的 python 包 我将在项目中的单独文件中导入其中的模块 我尝试通过 sys 将项目的目录添加到 pythonpath 但 mod wsgi 仍然无法识别它 imp
  • 使用本地通知 ios 打开 url

    我已经搜索了一段时间试图找到答案 但似乎找不到 我想做的是让我的应用程序在后台运行时发送本地通知 并且当用户打开通知时 会将他们带到网站 我已全部设置完毕 但它一直打开应用程序而不是访问网站 我的问题是 这可能吗 如果是这样 您能看看我下面
  • 从源代码构建 Python3.7.3 缺少“_ctypes”

    我正在尝试从源代码构建Python 3 7 3ensurepip但我收到此错误 ModuleNotFoundError No module named ctypes 网上所有的答案都这么说libffi dev是需要的 但我已经安装了它 但它
  • Mobile Safari - 当最后一次触摸被删除时,“touchend”事件没有触发?

    我试图捕获的 手势 是当但仅当元素 其他或相同 已经触摸时的点击 因此 触摸 1 按下按钮 同时触摸 2 点击所选选项 触摸 1 释放并按下按钮 我遇到的问题是最后一点 当我释放最后一个手指时 touchend 事件没有被触发 那么我没有办
  • Android手机可以使用windows DirectX库吗?

    我有一些使用 Windows 中的 Direct X 库绘制游戏屏幕的函数 因此 我尝试使用 ndk 来使用 Android 手机中的功能 但我有一些问题 使用Java的Android手机可以识别Direct X功能吗 如果可以的话 我必须
  • git add --interactive“您编辑的块不适用”

    我正在尝试使用git add interactive有选择地向我的索引添加一些更改 但我不断收到 您编辑的大块不适用 再次编辑 消息 即使我选择 e 选项 我也会收到此消息 并立即保存 关闭我的编辑器 换句话说 如果根本不编辑该块 该补丁就
  • Rabbitmq Consumer_Timeout 行为未按预期工作?

    我很难证明consumer timeout设置正在按预期工作 我可能做错了或者误解了consumer timeout行为 我所有的测试代码都可以在这里找到 https github com Rafarel rabbitmq tests 基本
  • instance_eval 的块参数 - 已记录?目的?

    刚刚意识到instance eval yields self作为关联块的参数 1 9 2 版本中的错误除外 http www ruby forum com topic 189422 1 9 3p194 003 gt class C end
  • 如何从 LINQ to XML 中的 XElement 读取特定元素值

    我有一个XElement其中有这样的内容
  • HTML:如何创建“另存为”按钮?

    在浏览器中 当您想要保存当前正在查看的 HTML 页面时 通常会转到 文件 菜单并单击 另存为 我可以在 HTML 页面底部添加一个具有相同功能的小按钮吗 因此 我希望我的用户能够单击按钮将页面保存到磁盘上 而不是转到 文件 菜单 gt 另
  • EF Core 2.0 Identity - 添加导航属性

    在 EF Core 2 0 中 默认情况下不包含 Identity 导航属性 因此在升级后 我添加了它们 因此 对于用户和角色之间的多对多关系以及角色和 RoleClaim 之间的一对多关系 我添加了以下导航属性 public class
  • 如何扩展Spring注解@Transactional

    我必须在我的网络应用程序中使用 3 个不同的事务管理器 所以我根据以下内容编写了自己的注释弹簧参考 第 10 5 6 3 节自定义快捷方式注释 一个注释 用于使用一个特定的事务管理器 如下所示 import java lang annota