0
我正在經歷AspectJ。但是,我無法弄清楚使用+登錄連接點簽名。aspectj +符號如何爲繼承方法工作?
例如:
call(String Stack+.pop());
自定義堆棧:
public class Stack {
public String pop() {
return "abc";
}
}
public class StackSubclass extends Stack{
}
public aspect SimpleAspect {
pointcut p1(): call (String Stack+.pop());
before() : p1() {
System.out.println("Before advice");
}
}
public class Main {
public static void main(String[] args) {
StackSubclass obj = new StackSubclass();
System.out.println(obj.pop());
}
}
輸出:
Before advice
abc
沒有+登錄方面:
public aspect SimpleAspect {
pointcut p1(): call (String Stack.pop());
before() : p1() {
System.out.println("Before advice");
}
}
輸出:
Before advice
abc
所以,我的問題是什麼是+符號的意義是什麼?因爲有+和無+符號,輸出是相同的。
看看這裏的第一個答案http://stackoverflow.com/questions/2847640/spring-aop-pointcut-that-matches-annotation-on-interface/2848161#2848161 –
謝謝!但是,在繼承方法調用的情況下,父切入點將始終捕獲子節點上的事件。請看看我的代碼。 – Touchstone