2

我正在尝试使用注释样式对方面进行编码。我正在创建一个“环绕”建议,但我似乎找不到任何方法可以从建议方法中访问 thisEnclosureJoinPointStaticPart。每当我尝试为它定义一个参数时,我都会从 ajc 编译器中得到一个错误。

这是我的切入点和建议的声明:

@Pointcut("call(@xxx.api.annotation.InvokeOnEDT * gov.raptor..*.*(..))")
void invokeOnEDTPointCut()
{/*empty*/}

@Around("invokeOnEDTPointCut(thisEnclosingJoinPointStaticPart)")
public Object invokeOnEDT(final ProceedingJoinPoint thisJoinPoint, thisEnclosingJoinPointStaticPart) throws Throwable
{...}

我知道这无法编译,我提供它以显示我“想要”做的事情,但找不到方法。我花了几个小时在网上搜索,我能找到的唯一例子是之前或之后的建议,它们似乎允许这种语法。周围的建议显然表现不同,但我发现没有任何讨论它。

我编译时收到的错误是这样的:

[ERROR] ...\aspects\DispatchEDTAspects.java:42:0::0 incompatible number of arguments to pointcut, expected 0 found 1

关于如何从建议方法中访问 thisEnclosureJoinPointStaticPart 的任何想法?

4

1 回答 1

0

关于什么:

@Around("call(@xxx.api.annotation.InvokeOnEDT * gov.raptor..*.*(..))")
        public Object advice(final ProceedingJoinPoint thisJoinPoint, ProceedingJoinPoint.EnclosingStaticPart thisEnclosingJoinPointStaticPart) throws Throwable {
    ...
    }
于 2013-07-04T07:01:15.253 回答