AspectJ @Before注释问题

2023-12-28

我在 AspectJ 实施方面遇到一些问题!
我想为带有 @MyAnnotation 注释的方法创建一个日志方法。

MyAnnotation.java:

@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface MyAnnotation{ }

MyAspect.java:

@Aspect
public class MyAspect {
    private static Logger logger = Logger.getLogger(MyAspect.class.getName());

    @Pointcut("@annotation(com.utils.aop.annotations.MyAnnotation)")
    public void logMyAspect() {
    }
    @Before("logMyAspect()")
    public void logMethod(JoinPoint jp) {
        String methodName = jp.getSignature().getName();
        logger.info("Executing method: " + methodName);
    }
}

我在项目的一些服务方法之前使用我的@MyAnnotation:

    @RolesAllowed({ "DEV", "GUI", "API" })
    @POST
    @Path("/getList")
    @Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
    @MyAnnotation
    public Response getList(@Context final ContainerRequestContext requestContext,  
            FilterAndSortObject filterAndSortObject, 
            @QueryParam("offset") final int offset,
            @QueryParam("limit") final int limit)
    {
             ...
    }

我还发现我应该在配置类中使用 @EnableAspectJAutoProxy :

@Configuration
@EnableAspectJAutoProxy
public class ServletContextClass implements ServletContextListener {
    final static Logger logger = Logger.getLogger(ServletContextClass.class);
    @Override
    public void contextInitialized(final ServletContextEvent sce) {
    ...
    }
...
}

然而它似乎不起作用。它不记录任何内容!
我在中使用了断点logMethod(JoinPoint jp)也检查了结果,没有成功!

有谁知道为什么这不起作用?


您不必将切入点和处理程序方法分开;事实上,我确信这就是导致您出现问题的原因。以下方面应该可以正常工作:

@Aspect
public class MyAspect {
    private static Logger logger = Logger.getLogger(MyAspect.class.getName());
    @Before("@annotation(com.utils.aop.annotations.MyAnnotation)")
    public void logMyAspect(JoinPoint jp) {
        String methodName = jp.getSignature().getName();
        logger.info("Executing method: " + methodName);
    }
}

您还可以检查注释值,以防它带有参数:

@Before("@annotation(a)")
public void logMyAspect(JoinPoint jp, MyAnnotation a) {
    // conditional logging based on annotation contents
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

AspectJ @Before注释问题 的相关文章

  • MP3:一种以毫秒为单位获取任何给定字节位置的位置的方法?

    我创建了一个 servlet 它返回从客户端请求的任何给定字节位置开始的流 来自 MP3 文件 这允许客户端在任何给定字节位置立即开始播放 而无需进行任何本地查找 现在 我有一个滑块可以直观地显示进度 我正在使用当前字节位置来更新滑块 但是
  • 如何在 Eclipse 中用阿拉伯语读写

    我在 eclipse 中编写了这段代码来获取一些阿拉伯语单词 然后打印它们 public class getString public static void main String args throws Exception PrintS
  • 由于连接超时,无法通过 ImageIO.read(url) 获取图像

    下面的代码似乎总是失败 URL url new URL http userserve ak last fm serve 126 8636005 jpg Image img ImageIO read url System out printl
  • JTree 节点不会被直观地选择

    不知何故 我无法为我的 JTree 节点启用 选择突出显示 我正在我的项目中使用自定义单元格渲染器 这很可能导致此问题 这是完整的渲染器类代码 protected class ProfessionTreeCellRenderer exten
  • PropertySources 中各种源的优先级

    Spring引入了新的注释 PropertySources对于所有标记为的类 Configuration since 4 0 需要不同的 PropertySource作为论证 PropertySources PropertySource c
  • 如何将 Spotlight for Help 插入本地化的 macOS 应用程序?

    我正在 macOS 上使用 Swing GUI 框架实现 Java 应用程序 当使用system外观和感觉以及screen菜单栏 Swing 自动插入一个搜索栏 called 聚光灯寻求帮助 https developer apple co
  • 如何将 XMP XML 块序列化为现有的 JPEG 图像?

    我有许多 JPEG 图像 其中包含损坏的 XMP XML 块 我可以轻松修复这些块 但我不确定如何将 固定 数据写回图像文件 我目前正在使用 JAVA 但我愿意接受任何能让这项任务变得容易的事情 这是目标关于 XMP XML 的另一个问题
  • cucumber-junit-platform-engine 中的功能文件发现

    In cucumber junit我使用的库 CucumberOptions定义功能文件位置 package com mycompany cucumber import cucumber api CucumberOptions import
  • 如何在 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 创建并应用模拟而
  • 覆盖 MATLAB 默认静态 javaclasspath 的最佳方法

    MATLAB 配置为在搜索用户可修改的动态路径之前搜索其静态 java 类路径 不幸的是 静态路径包含相当多非常旧的公共库 因此如果您尝试使用新版本 您可能最终会加载错误的实现并出现错误 例如 静态路径包含 google collectio
  • tomcat 过滤所有 web 应用程序

    问题 我想对所有网络应用程序进行过滤 我创建了一个过滤器来监视对 apache tomcat 服务器的请求 举例来说 它称为 MyFilter 我在 netbeans 中创建了它 它创建了 2 个独立的目录 webpages contain
  • 如何使用 Mockito 和 Junit 模拟 ZonedDateTime

    我需要模拟一个ZonedDateTime ofInstant 方法 我知道SO中有很多建议 但对于我的具体问题 到目前为止我还没有找到任何简单的解决办法 这是我的代码 public ZonedDateTime myMethodToTest
  • 阻止 OSX 变音符号为所有用户禁用 Java 中的 KeyBindings?

    注 我知道这个问题 https stackoverflow com questions 40335285 java keybinds stop working after holding down a key用户必须输入终端命令才能解决此问
  • struts 教程或示例

    我正在尝试在 Struts 中制作一个登录页面 这个想法是验证用户是否存在等 然后如果有错误 则返回到登录页面 错误显示为红色 典型的登录或任何表单页面验证 我想知道是否有人知道 Struts 中的错误管理教程 我正在专门寻找有关的教程 或
  • Path2D 上的鼠标指针检测

    我构建了一个Path2D http docs oracle com javase 7 docs api java awt geom Path2D html表示由直线组成的未闭合形状 我希望能够检测何时单击鼠标并且鼠标指针靠近路径 在几个像素
  • 从一个文本文件中获取数据并将其移动到新的文本文件

    我有一个文件 里面有数据 在我的主要方法中 我读入文件并关闭文件 我调用另一种方法 在原始文件的同一文件夹内创建一个新文件 所以现在我有两个文件 原始文件和通过我调用的方法生成的文件 我需要另一种方法 从原始文件中获取数据并将其写入创建的新
  • 如何将实例变量传递到 Quartz 作业中?

    我想知道如何在 Quartz 中外部传递实例变量 下面是我想写的伪代码 如何将 externalInstance 传递到此作业中 public class SimpleJob implements Job Override public v
  • 为什么 BufferedWriter 不写入文件?

    我有这个代码 String strings Hi You He They Tetrabenzene Caaorine Calorine File file new File G words txt FileWriter fWriter Bu
  • 使用 eclipse IDE 配置 angularjs

    我想开始使用 AngularJs 和 Java Spring 进行开发 我使用 Eclipse 作为 IDE 我想配置我的 Eclipse 以使这些框架无缝工作 我知道我可能要求太多 但相信我 我已经做了很多研究 你们是我最后的选择 任何帮

随机推荐

  • 从 Android 调用 JavaScript

    我在从 Android 内部调用基本 JavaScript 函数时遇到问题 当我从以下位置克隆存储库时本教程 https www tanelikorri com tutorial android communication between
  • 将请求的响应保存到文件

    我在用着Requests http docs python requests org en latest api 将 PDF 上传到 API 它被存储为下面的 响应 我正在尝试将其写到 Excel 中 import requests fil
  • CSS 模块和多个布局/主题?

    在我的应用程序中 我有多种主题样式 您可以将它们视为不同的 单独的 CSS 样式文件 我想开始使用 CSS 模块 但我什至不知道如何使用import我的第一个文件 让我们假设以下 简单 目录结构 layouts themeA myCompo
  • char 指针数组和 int 指针数组之间的区别

    这是一道C题 我不明白为什么这段代码有效 char c hello world 但这并没有 int v 1 2 3 4 对我来说 它们是相同的东西 用各自类型初始化的指针数组 但显然它们不是 那么到底有什么区别呢 谢谢 编辑 如果对我的帖子
  • PayPal 初始化时出错

    我使用 ios 版 paypal 移动支付库 iPhone 5 01 iOS 我无法在我的应用程序中初始化 PayPal After PayPal initializeWithAppID APP 80W284485P519543T forE
  • 如何在 src 标签中连接两个字符串?

    这里我想将两个字符串连接在一个 img 标签 这个怎么做 img src partners item AdPath alt id adimg title item AdName width 50px height 50px gt 有什么建议
  • JavaScript 中的嵌套 while 循环

    我正在尝试制作一个带有嵌套的星星网格while loop 它确实适用于for loop for m 1 m lt 5 m for n 1 n lt 10 n document write document write br 但我不知道如何用
  • 在 Actionscript 中绘制三次贝塞尔曲线?

    在 AS3 中以编程方式绘制三次贝塞尔曲线的最佳方法是什么 这Graphics类似乎只支持二次曲线 我希望能够做类似的事情 var startPoint Point new Point 0 0 var endPoint Point new
  • Bookdown:导出到 Word 文档(files2[[format]] 中的错误:尝试在 get1index 中选择少于一个元素)

    我正在使用 bookdown 包和回忆录乳胶类来写我的论文 当我导出到 pdf 或 html 时 一切都相对正常 但我无法将论文导出到 word 文档 我收到以下神秘错误 Error in files2 format attempt to
  • Google:拒绝为不在本地主机上的目标域生成登录提示的权限

    我正在尝试创建 Google 登录并收到错误 拒绝为目标域生成登录提示的权限 在将其标记为重复之前 这是not与提出的问题相同Google 登录网站错误 生成目标域登录提示的权限被拒绝 https stackoverflow com que
  • 从 VS2012 远程调试 Win8 Surface 应用程序

    我正在尝试在 Microsoft Surface RT 平板电脑上的 VS2012 中调试 Windows 应用商店应用程序 桌面开发系统和 Surface 平板电脑位于同一子网 191 168 1 x 我已经在平板电脑上安装了适用于 AR
  • 每次编辑build.gradle文件Android studio都会冻结

    我正在使用 Android studio 3 1 Canary 3 和 gradle 4 3 1 我访问maven org非常慢 但是当我在Android studio中编辑build gradle文件时 它会向 因此 在编辑 build
  • cPickle 可以保存重塑的 numpy 对象引用吗?

    我有一个类定义为 class A def init self a np array 0 1 2 3 4 5 self b self a reshape 2 3 现在 b 实际上是数组 a 的重构引用 如果我们改变 a 的第一个元素 a 0
  • ALTER 表 - 在 MySQL 中添加自动增量

    我在 MySQL 中创建了一个带有 on 列的表itemID 创建表后 现在我想将此列更改为AUTOINCREMENT 如何使用 ALTER 语句来完成此操作 表定义 ALLITEMS itemid int 10 unsigned item
  • 你能用 Jquery 操作字符串中的数字吗? [复制]

    这个问题在这里已经有答案了 我有一些像这样的字符串 p It will vary from 100g to 200g p p 2lbs of meat p p 3 piles of timber p etc etc 我想增加 减少每个字符串
  • 如果我不关心特定编码,如何将 u8 切片打印为文本?

    当打印一个u8Rust 中的数组使用println some u8 slice 这会打印数值 正如它应该的那样 将字符按原样格式化为字符串的最直接方法是什么 不假设任何特定的编码 就像迭代字节字符串并将每个字符写入stdout 没有那么多麻
  • MySQL 二进制日志复制:可以设置为忽略错误吗?

    我正在运行一个主从 MySQL 二进制日志复制系统 唷 对于某些数据 该系统不同步 这意味着主服务器比从服务器保存更多的数据 但是从站经常因为最轻微的 MySQL 错误而停止 这可以禁用吗 可能是复制从站忽略复制错误或某些类似的 my cn
  • 如何停止网络音频脚本处理器并清除缓冲区?

    我正在尝试找出一种方法来阻止网络音频脚本处理器节点运行 而无需断开连接 我最初的想法是将 onaudioprocess 设置为 null 来停止它 但是当我这样做时 我听到了一个非常短的音频播放循环 我的猜测是音频缓冲区没有被清除或其他什么
  • Git 别名出错,但在 CLI 中运行它始终有效

    Running git commit amend no edit在 CLI 中工作 当我给它起别名时 在 zshrc alias gam git commit amend no edit 并运行它 gam fatal Stray git r
  • AspectJ @Before注释问题

    我在 AspectJ 实施方面遇到一些问题 我想为带有 MyAnnotation 注释的方法创建一个日志方法 MyAnnotation java Retention RetentionPolicy RUNTIME Target Elemen