メソッドのすべての実行に一致するポイントカットを書くことに混乱しています。class のすべてのメソッド実行に一致するはずのポイントカットを試しましたAlpha
:
execution(* Alpha.*(..))
次のクラス階層で
public class Alpha {
public void alphaMethod() {...}
}
public class Beta extends Alpha {
public void betaMethod() {
alphaMethod();
}
}
Main-program が -instance を呼び出す場合、alphaMethod
アドバイスBeta
は期待どおりに呼び出されbetaMethod
ますalphaMethod
が、アドバイス内で呼び出す Main-program 呼び出しは呼び出されず、その理由がわかりません。
アスペクト定義:
@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.