我对编写一个匹配方法的所有执行的切入点感到困惑。我尝试了应该匹配类的所有方法执行的切入点Alpha
:
execution(* Alpha.*(..))
具有以下类层次结构
public class Alpha {
public void alphaMethod() {...}
}
public class Beta extends Alpha {
public void betaMethod() {
alphaMethod();
}
}
如果 Main-program 调用alphaMethod
-instanceBeta
我的建议会像预期的那样被调用,但是在我的建议内部调用的 Main-program 调用betaMethod
不会alphaMethod
被调用,我不明白为什么。
方面定义:
@Aspect
public class MyAspect {
@Before(value = "execution(* Alpha.*(..))", argNames="joinPoint")
public void myAdvice(JoinPoint joinPoint) {
System.out.println("BEFORE: " + joinPoint.getSignature());
}
}
主要方法:
Beta beta = ...;
beta.alphaMethod(); //advice is called
beta.betaMethod(); //advice is NOT called.