仅使用注释使用 Spring AOP 拦截方法

2023-12-03

在我的 Spring 上下文文件中,我有这样的内容:

<bean id="userCheck" class="a.b.c.UserExistsCheck"/>
<aop:config>
      <aop:aspect ref="userCheck">
         <aop:pointcut id="checkUser"
                expression="execution(* a.b.c.d.*.*(..)) &amp;&amp; args(a.b.c.d.RequestObject)"/>
         <aop:around pointcut-ref="checkUser" method="checkUser"/>
      </aop:aspect>
</aop:config>    

a.b.c.UserExistsCheck 看起来像这样:

@Aspect
public class UserExistsCheck {

@Autowired
private UserInformation userInformation;

public Object checkUser(ProceedingJoinPoint pjp) throws Throwable {
    int userId = ... //get it from the RequestObject passed as a parameter
    if (userExists(userId)) {
        return pjp.proceed();
    } else {
        return new ResponseObject("Invalid user);
    }
}

被这些东西拦截的类看起来像这样:

public class Klazz {
    public ResponseObject doSomething(RequestObject request) {...}
}

这有效。 UserExistCheck 在调用传递给 Klazz 之前根据需要执行。问题是这是我让它工作的唯一方法。通过使用注释而不是上下文文件来完成这项工作对于我的小大脑来说似乎太多了。那么...我到底应该如何注释 UserExistsCheck 和 Klazz 中的方法?我还需要其他东西吗?又一堂课?上下文文件中还有什么东西吗?


您启用了基于注释的 AOP 吗?这文档说你必须添加

<aop:aspectj-autoproxy/>

到你的弹簧配置。然后你需要在你的前面添加注释checkUser方法。看起来像你想要的@Around建议,如上所述here.

@Aspect
public class UserExistsCheck {

  @Around("execution(* a.b.c.d.*.*(..)) && args(a.b.c.d.RequestObject)")
  public Object checkUser(ProceedingJoinPoint pjp) throws Throwable {
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

仅使用注释使用 Spring AOP 拦截方法 的相关文章

  • java.lang.Class: 在 java 程序中初始化 log4j 属性文件时出错

    我正在尝试使用 log4j 运行独立的 java 程序 但在调试时收到以下消息 控制台上没有 log4j 相关日志 log Logger 1343 java lang Class ERROR in 18b4aac2 有人可以建议这里出了什么
  • 如何从另一个xml文件动态更新xml文件?

    我想从另一个 xml 文件更新 xml 文件 我使用了一个 xml 文件 如下所示 one xml
  • 通过 InjectMocks Spy 注入对象

    我需要对一个类运行一系列单元测试 该类具有 Autowired Logger 实现 实现的基本思想是 Mock Logger logger InjectMocks TestedClass tested 但我想保存日志输出功能 Mockito
  • 如何对 IntStream 进行逆序排序

    我正在使用 txt 文件读取数字BufferedReader 我想颠倒该流中元素的顺序 以便在收集它们时 它们将从最高到最低排列 我不想在构建数组后进行排序 因为我不知道其中可能有多少元素 我只需要最高的 N 个元素 in new Buff
  • Google Inbox 类似 RecyclerView 项目打开动画

    目前 我正在尝试实现 Google Inbox 例如RecyclerView行为 我对电子邮件打开动画很好奇 我的问题是 该怎么做 我的意思是 他们使用了哪种方法 他们用过吗ItemAnimator dispatchChangeStarti
  • Java 重写 hashCode() 得到 StackOverflowError

    所以我不太熟悉重写 hashCode 并且我似乎在 hashCode 方法中以某种方式进行了一些无限递归 这是我的场景 我有一个 DuplicateCache 类 它是一个缓存对象 用于检查系统中的重复对象 我有一个静态内部类 Duplic
  • 方法断点可能会大大减慢调试速度

    每当向方法声明行添加断点 在 Intellij IDEA 或 Android Studio 中 时 都会出现一个弹出窗口 方法断点可能会大大减慢调试速度 为什么会这样戏剧性地减慢调试速度 是我的问题吗 将断点放在函数的第一行有什么不同 Th
  • Android - 除了普通 SSL 证书之外还验证自签名证书

    我有一个通过 SSL 调用 Web 服务的 Android 应用程序 在生产中 我们将拥有由受信任的 CA 签名的普通 SSL 证书 但是 我们需要能够支持自签名证书 由我们自己的 CA 签名 我已经成功实施了接受自签名证书的建议解决方案
  • Java替换特定字符

    这是我在这个网站上的第一个问题 所以我会尽量不要成为一个十足的菜鸟 我目前正在用java 创建刽子手游戏 所以我问你的问题是我们是否被赋予了 幽灵 这个词 并将 Ghost 替换为 hiddenWord ghost length for i
  • 使用 java 按电子邮件发送日历邀请

    我正在尝试使用 java 发送每封电子邮件的日历邀请 收件人收到电子邮件 但不会显示接受或拒绝的邀请 而是将该事件自动添加到他的日历中 我正在使用 ical4j jar 构建活动 邀请 private Calendar getInvite
  • 想要开发像 Facebook 这样的网站 - 处理数百万个请求 - 高性能 [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我想用 Java 开发一个像 Fac
  • 如何在 Spring MongoDB 聚合上投影 DBRef?

    我在 MongoDB shell 中完成了以下聚合 以获取每个用户每种类型的警报数量 db getCollection alerts aggregate unwind son group id son son level level cou
  • 在 Spring Context 加载实际的 Spring Bean 之前是否模拟了模拟 bean (@MockBean)?

    让我们以下面的例子为例 Autowired MockBean private Foo foobar Spring Context 是否加载类Foo首先 然后应用模拟 或者是 Mockbean以某种方式被检测到 Spring 创建并应用模拟而
  • 从 Java 日历迁移到 Joda 日期时间

    以前 当我第一次设计股票应用相关软件时 我决定使用java util Date表示股票的日期 时间信息 后来我体会到了大部分方法java util Date已弃用 因此 很快 我重构了所有代码以利用java util Calendar 然而
  • 让JScrollPane控制多个组件

    对于我的应用程序 我正在设计一个脚本编辑器 目前我有一个JPanel其中包含另一个JPanel保存行号 位于左侧 以及JTextArea用于允许用户输入代码 位于右侧 目前 我已经实施了JScrollPane on the JTextAre
  • 如何使用 Mockito 和 Junit 模拟 ZonedDateTime

    我需要模拟一个ZonedDateTime ofInstant 方法 我知道SO中有很多建议 但对于我的具体问题 到目前为止我还没有找到任何简单的解决办法 这是我的代码 public ZonedDateTime myMethodToTest
  • 将 RSA 密钥从 BigIntegers 转换为SubjectPublicKeyInfo 形式

    WARNING 最初的问题是关于 PKCS 1 编码密钥 而问题中的实际示例需要SubjectPublicKeyInfo X 509 编码密钥 我目前正致力于在 java 中从头开始实现 RSA 算法 特别是密钥生成方面 现在我的代码可以给
  • 如何移动图像(动画)?

    我正在尝试在 x 轴上移动船 还没有键盘 我如何将运动 动画与boat png而不是任何其他图像 public class Mama extends Applet implements Runnable int width height i
  • struts 教程或示例

    我正在尝试在 Struts 中制作一个登录页面 这个想法是验证用户是否存在等 然后如果有错误 则返回到登录页面 错误显示为红色 典型的登录或任何表单页面验证 我想知道是否有人知道 Struts 中的错误管理教程 我正在专门寻找有关的教程 或
  • 为什么 BufferedWriter 不写入文件?

    我有这个代码 String strings Hi You He They Tetrabenzene Caaorine Calorine File file new File G words txt FileWriter fWriter Bu

随机推荐

  • 如何将事件侦听器添加到 HTML5 视频海报图像加载事件

    是否可以 我想将一个事件侦听器附加到 HTML5 视频元素上的海报图像 以便在加载并显示海报图像后运行代码 我正在尝试找出一种方法来做到这一点 但我需要帮助 像这样 var poster video prop poster if poste
  • 将现有 EC2 实例导出到 CloudFormation json/yaml

    Problem 我有一个EC2实例正在运行 我对实例做了一些修改 安装了 docker 设置证书目录等 现在 我想创建相同的实例 但使用基础设施作为代码主体 我没有记住我所做的所有添加并手动创建模板 而是尝试找到一种方法将当前的 EC2 实
  • 检查数据库是否存在并在 SQLite IOS 中删除数据库

    我目前正在使用phonegap 来创建ios 应用程序 在熟悉 sql javascript 交互的同时 我似乎已经创建了同名数据库文件的 10 个版本 我目前正在使用以下创建代码 来自phonegap wiki var mydb fals
  • Promise 回调按什么顺序触发?

    假设以下语句已按此顺序执行 promiseA then function console log A1 promiseB then function console log B promiseA then function console
  • 获取BehaviorSubject的值

    我正在尝试获取BehaviorSubject 的值 返回值 但我如何利用它们在 return true false 语句中使用它们 BehaviorSubject isScalar false observers Array 0 close
  • 在 php 中运行多个查询

    我对 PHP 和 HTML 真的很陌生 按提交按钮后 我尝试使用 Users MySQL 表中已有的数据填充字段 这有效 我还想将通过 SELECT 获得的相同数据插入到另一个名为 scan 的 SQL 表中
  • 为什么 HTML 中 标签没有关闭?

    出于好奇 为什么 img gt 标签未关闭于HTML img src smiley gif alt Smiley face height 42 width 42 我还注意到 img gt 标签明确地封闭在XHTML img src smil
  • 如何正确解析算术表达式中的数字,区分正数和负数?

    我在数据结构类中有一个作业 其中我必须编写一个计算器 用 4 个基本运算和括号来求解算术表达式 输入是通过 stdin 缓冲区完成的 输出也是如此 一开始很简单 老师给我们提供了算法 如何将表达式从中缀转换为后缀以及如何对其求值 唯一的目标
  • 如何在 J.T.Sage DateBox 中禁用已选择的下一个日期框的日期

    我的应用程序使用 jt sage DateBox 我想禁用已选择的下一个日期框字段的日期选择器例如 我的 Date1 就像 2014 年 8 月 13 日 我的其他日期框字段需要在 2014 年 8 月 13 日之后选择 注意 取决于之前的
  • 使用 BeautifulSoup 查找包含特定文本的 HTML 标签

    我正在尝试获取 HTML 文档中包含以下文本模式的元素 S 11 h2 this is cool 12345678901 h2 因此 前面的内容将通过使用以下方式进行匹配 soup h2 text re compile r S 11 结果会
  • Dictionary.cs 中的 FindEntry 函数

    我一直在研究 NET 字典的实现 因为我想了解是什么使字典 ContainsKey 和查找速度更快 http referencesource microsoft com mscorlib system collections generic
  • 添加新的 MDI 子窗口时如何避免屏幕弹跳

    在我的 MDI 框架中 我正在创建 MDI 子窗口 如下所示 Form frm new frmMyChild frm MdiParent this frm WindowState FormWindowState Maximized frm
  • 用于渲染丰富网页内容的移动设备检测

    迄今为止最具网络功能的手机是什么 型号和 或用户代理 以及 当试图确定它们是否能够处理丰富的移动定制网站时 应该评估哪些规则 我正在开发一个移动网站 目前正在进行一些用户代理检测 以确定移动设备是否应该看到完全增强的 js jquery m
  • 屏幕上鼠标位置周围区域的缩放框[关闭]

    Closed 这个问题不符合堆栈溢出指南 目前不接受答案 有关您编写的代码的问题必须描述具体问题 and 包含有效代码重现它 在问题本身中 看SSCCE org以获得指导 询问代码的问题必须对所解决的问题表现出最低限度的了解 包括尝试的解决
  • Python:旧式(或经典)和新式对象的方法解析顺序

    我读过很多关于 Python 文档中的对象的内容 它们在某些方面区分了这两者 例如 旧式实例与其类无关 是使用称为实例的单个内置类型来实现的 新样式类既不大于也不小于用户定义的类型 有人可以向我解释更多吗 旧式 或经典 和新式 我不明白这句
  • 手工查询与 findDependentRowset

    我已经用 Zend 构建了一个相当大的应用程序 我想知道哪个更好 手动构建查询 使用 Zend 对象模型 db gt select gt form table gt join table2 table id table2 table id
  • php中的时区转换

    谁能建议一种简单的方法来将 php 中的日期和时间转换为不同的时区 您可以为此使用 datetime 对象或其函数别名 例子 摘自 PHP 手册 date default timezone set Europe London datetim
  • 如何在迭代容器时修改容器? [复制]

    这个问题在这里已经有答案了 我指的是容器本身 而不是容器的内容 我想插入 删除 追加等 我对我的问题进行了抽象如下 fn f let mut numbers vec 10 11 12 14 15 for index in 0 numbers
  • 当垃圾收集器消除该对象时,该对象去了哪里?

    假设垃圾收集器已识别出一个类 对象 的实例 Java 程序未使用该实例 因此 垃圾收集器决定消除该对象 因为它没有在代码中的任何地方使用 现在 当一个对象被消除时 该对象在内存中去了哪里 内存中的该对象实际上发生了什么 一般来说 当物体被消
  • 仅使用注释使用 Spring AOP 拦截方法

    在我的 Spring 上下文文件中 我有这样的内容