当前位置: 首页 > 面试题库 >

Spring AOP:可以访问参数名称

欧阳绪
2023-03-14
问题内容

我正在使用Spring 3.x,Java 6。

我有一个@Around方面,具有以下连接点:

@Around("execution(public * my.service.*.*Connector.*(..))")

因此,我基本上有兴趣拦截所有以“ Connector”结尾的类的公共方法的调用。到目前为止,一切都很好。

现在,就我而言,我想访问方法的实际参数名称:

public doStuff(String myarg, Long anotherArg)

myarganotherArg

我了解使用:

CodeSignature signature = (CodeSignature)jointPoint.getSignature();
return signature.getParameterNames();

仅在我使用“ -g ”标志编译代码(完全调试)并且我宁愿不这样做的情况下才有效。

还有其他方法可以访问这种运行时信息。

谢谢L


问题答案:

不幸的是,您不能做到这一点:-(。这是JVM /字节码的一个众所周知的限制-参数名不能使用反射来获取,因为它们并不总是存储在字节码中(与方法/类名相反) 。

作为一种变通办法,一些框架/规范在诸如WebParamnameproperty)或PathParam。之类的参数上引入了自定义注释。

目前,没有注释就可以得到的是一个值数组。



 类似资料:
  • 我有一个自定义注释, 我正在将这个注释用于以下方法, 我在以下方面捕捉事件, @Around建议仅适用于“进程连接点”参数。如果将 XAudit 作为第二个参数传递,则会引发以下错误: 我需要在方面中使用xaud才能访问Xaud的操作。请分享一些关于如何在@周围方面中访问@Xaud值的指针。

  • laravel的一个问题,我简化了一下是这样。 我想让访问接口 /a,未登录状态访问返回 0, 登录状态下返回 1,如何实现? 正常是这样。topic 状态为 1 时可以任何人访问,状态未 2 时,只有作者可以访问。 上边这种情况,无论登录与否,$user 都是 null。 如果 route 加上 middleware('auth'), 那么未登录状态又无法访问。

  • 我想发送我的(在AngularJS控制器中)设置参数如下: 但是我不确定这是否是正确的方法,在Node.js中写什么:

  • 举例: 一篇新闻,匿名用户可以正常访问,已登录用户访问后会记录阅读历史。 这种情况下路由该怎么写的?

  • 问题内容: 我通过运行以下命令开始量角器测试: 我想运行一个“启动前”功能,该功能取决于一个参数(在本例中为baseUrl)。有可能吗 如果我运行该命令,则会得到ReferenceError,因为未定义config。我该怎么办?那有可能吗? 问题答案: 我不能完全确定是否在此阶段设置了量角器全局变量,但绝对可以在步骤中使用它们。 通过全局对象访问对象: 更新:使用Jasmine 2.6+,量角器4

  • 问题内容: javascript中的函数通过保持与其隐藏范围的(隐藏)链接来形成关闭。 当我们拥有函数(作为变量值)时,是否可以通过编程方式访问它? 真正的目标是理论上的,但一个演示可能是列出闭合的属性。 问题答案: 这是关闭的目的之一(使信息保密)。由于该函数已经执行,因此它的作用域变量不再可从外部获得(并且从未使用过)-只有在其作用域中执行的函数(仍然)可以访问。 但是,您可以通过getter