通過編寫匹配方法的所有執行的切入點,我感到困惑。我想,應該匹配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將繼承的方法包含在內? –