当前位置: 首页 > 知识库问答 >
问题:

在AspectJ中方法调用期间拦截对象

芮学
2023-03-14

我正在尝试使用Aspects来做同样的事情,现在我使用哪个注释来捕获相关的对象,切入点表达式应该是什么?我尝试了@afterreturn,但这是一个void方法,如何捕获该方法的参数?我是AOP的初学者,所以如果这个问题太琐碎,请原谅。

解决方案:使用spring AOP获取方法参数?

共有1个答案

都超英
2023-03-14

您有两个选择,要么创建一个spring aop proxy(1)bean,要么使用aspectj(2)。

  1. 将在运行时使用,它将创建一个代理“包装器”,该代理“包装器”将拦截对方法的调用。看一下proxyFactoryBean/beannameautoProxyCreator(advision)和NameMatchMethodPointcut(pointcut)。
  2. 使用AspectJ创建相同的拦截器。看一下

在这两种情况下,您都需要在方法执行之前进行拦截。因此,要么使用 要么使用MethodBeForeAdvision

 类似资料:
  • 问题内容: 我有这个代码 有什么方法可以在没有子类化或修改类且没有工厂的情况下拦截呼叫? 编辑:抱歉忘了提到这是在Android平台上。 问题答案: 您是否考虑过面向方面的编程,甚至还考虑过AspectJ?有关AspectJ / Android的信息,请参见此处和此处。

  • 我正在使用Spring并试图用AspectJ编写示例应用程序。我需要学习如何拦截静态方法调用。在我的示例中,我尝试截取main方法,如下所示: Spring配置文件: 主要方法: 协会本身: 但是当我运行应用程序时,唯一的字符串正在打印。

  • 我创建了一个JMenuItem,它接受一个匿名的内部类AbstractAction: 我用注册到我的JavaSwing框架的注册了这个。我有一个拦截对@Abc方法调用的切入点 关于这个切入点的建议: 对actionPerform的调用将源自javax内部。Swing,我只有(rt.jar)的二进制文件-是否可以在编译时编织javax。Swing来完成上述任务?

  • 有多篇关于如何在Spring AOP中拦截内部方法调用的帖子。但是找不到任何与使用AspectJ排除内部方法相关的帖子。我们希望使用AspectJ编译时编织来实现它promise的运行时性能改进。 如果另一个类的方法调用了下面类TestService中的任何公共方法,则应该拦截该调用。但是,不应该截取从method1()到method2()的内部调用。我们只希望拦截器对每个对象只拦截一次。 一个示

  • 问题内容: 我正在用python实现RESTful Web服务,并想通过拦截函数调用并记录其执行时间等方式来添加一些QOS记录功能。 基本上,我想到了所有其他服务都可以从中继承的类,该类会自动覆盖默认方法的实现,并将其包装在logger函数中。实现此目标的最佳方法是什么? 问题答案: 像这样吗 这暗示着在您的方法中添加装饰器(如果您愿意,也可以基于此创建一个显式装饰器): 当您现在尝试类似的方法: