如何获取注释参数的值以在 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
或其他)。
嗯,好的。所以我需要执行,但参数也可能是完全不相关的东西,比如方法名称?
连接点和上下文收集切入点可以有很多不同的组合。可以收集方法参数、参数注解、this
或target
等。最好仔细阅读文档。它包含大量样本。以上是关于如何获取注释参数的值以在 AspectJ 中使用?的主要内容,如果未能解决你的问题,请参考以下文章