java“around”通知的内容可以从单独的函数执行吗?
我需要执行一些常见的代码来获得一些“周围”的建议。因此,我将通用代码移到了一个函数中。但我的问题是,在这个公共函数中,procedure()不起作用。请参阅下面的代码
aspect MyAspect {
pointcut myPointCut() : execution(* com.test.MyTestInterface.*(..));
Object around() : myPointCut() {
Object retVal = null;
try {
ProceedingJoinPoint pjp = (ProceedingJoinPoint) thisJoinPoint;
myfunction(pjp);
} catch (Throwable e) {
e.printStackTrace();
}
return retVal;
}
public void myfunction(ProceedingJoinPoint pjp) {
System.out.println("Inside myfunction()" + pjp.getSignature());
pjp.proceed();
}
}
将此连接点强制转换为处理连接点无效。“Inside myfunction()”已打印,但下一条语句不执行切入点截获的方法
有没有办法做到这一点
# 1 楼答案
您可以将
proceed
调用包装在您在around advice方法中定义的匿名类的方法中。如this paper中的图1所示:# 2 楼答案
我没有让它使用传统的语法,但我想我可能有一个解决方案@AspectJ Syntax: