@Around建议访问thisEnclosingJoinPointStaticPart

时间:2013-01-18 18:04:21

标签: annotations aspectj

我正在尝试使用注释样式对方面进行编码。我正在创建一个“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的任何想法?

1 个答案:

答案 0 :(得分:0)

怎么样:

@Around("call(@xxx.api.annotation.InvokeOnEDT * gov.raptor..*.*(..))")
        public Object advice(final ProceedingJoinPoint thisJoinPoint, ProceedingJoinPoint.EnclosingStaticPart thisEnclosingJoinPointStaticPart) throws Throwable {
    ...
    }