我正在尝试使用注释样式对方面进行编码。我正在创建一个“around”建议,但我似乎找不到任何方法可以从advice方法中访问thisEnclosingJoinPointStaticPart。每当我尝试为它定义一个参数时,我都会从ajc编译器中得到一个错误。
这是我的切入点和建议的声明:
@Pointcut("call(@xxx.api.annotation.InvokeOnEDT * gov.raptor..*.*(..))")
void invokeOnEDTPointCut()
{/*empty*/}
@Around("invokeOnEDTPointCut(thisEnclosingJoinPointStaticPart)")
public Object invokeOnEDT(final ProceedingJoinPoint thisJoinPoint, thisEnclosingJoinPointStaticPart) throws Throwable
{...}
我知道这无法编译,我提供它来显示我“想要”做什么,但找不到办法。我花了几个小时在网上搜索,我能找到的唯一例子是Before或After建议,他们似乎允许这种语法。周围的建议显然表现不同,但我发现的任何内容都没有讨论它。
编译时收到的错误是:
[ERROR] ...\aspects\DispatchEDTAspects.java:42:0::0 incompatible number of arguments to pointcut, expected 0 found 1
有关如何从advice方法中访问thisEnclosingJoinPointStaticPart的任何想法?
答案 0 :(得分:0)
怎么样:
@Around("call(@xxx.api.annotation.InvokeOnEDT * gov.raptor..*.*(..))")
public Object advice(final ProceedingJoinPoint thisJoinPoint, ProceedingJoinPoint.EnclosingStaticPart thisEnclosingJoinPointStaticPart) throws Throwable {
...
}