如何获取注释参数的值以在 AspectJ 中使用?

Posted

技术标签:

【中文标题】如何获取注释参数的值以在 AspectJ 中使用?【英文标题】:How to get the value of an annotation parameter for usage in AspectJ? 【发布时间】:2011-07-20 12:09:49 【问题描述】:

考虑这种方法:

@Access(rights = GUEST)
public void foo() 
  doSomething();

如果方法有@Access注解,这个切入点基本匹配:

pointcut check() : 
execution(@Access * *(..));

但是如何访问@Access 的rights 字段,该字段存储了特定的访问级别,以便我可以使用它?

【问题讨论】:

【参考方案1】:

尝试使用:

pointcut check(Access access) : 
execution(@Access * *(..)) && @annotation(access);

见documentation here。

【讨论】:

酷!这似乎做到了。我需要两者的原因是什么? execution 描述您的连接点,@annotation 是收集连接点上下文的切入点。如果不定义连接点,您将无法收集内容。所以@annotation 需要execution(或call 或其他)。 嗯,好的。所以我需要执行,但参数也可能是完全不相关的东西,比如方法名称? 连接点和上下文收集切入点可以有很多不同的组合。可以收集方法参数、参数注解、thistarget等。最好仔细阅读文档。它包含大量样本。

以上是关于如何获取注释参数的值以在 AspectJ 中使用?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 PyQt5 QThread 从 CLASS(ShowVideo) 中获取值以在第二个 CLASS(ImageViewer) 中使用(根据我的程序)

如何获取剃须刀中单选按钮的值以将其作为参数传递给操作?

如何获取每个分区的最后一个值以在 Spark SQL 中估算缺失值

如何根据Windows Phone 7中的参数值在按钮中传递参数并获取后面代码中的值以重定向到另一页?

从 xxx.plist 获取值以在 Target 中构建设置

从 localStorage 获取值以在 Sencha Touch AJAX 代理中使用