通过编写匹配方法的所有执行的切入点,我感到困惑。我想,应该匹配Alpha
类的所有方法,执行的切入点:与下面的类层次结构带继承的切入点混淆
public class Alpha {
public void alphaMethod() {...}
}
public class Beta extends Alpha {
public void betaMethod() {
alphaMethod();
}
}
execution(* Alpha.*(..))
如果主程序上Beta
呼吁alphaMethod
-instance我的建议是所谓的预期,但主程序调用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.
我仍然不期待这种行为,但使用代理导致此问题。谢谢! – thomas
@darrengorman有没有办法告诉Spring将继承的方法包含在内? –