我想创建一个切入点,以将特定方法的调用作为目标。
采取以下措施:
class Parent {
public foo() {
//do something
}
}
class Child extends Parent {
public bar1() {
foo();
}
public bar2() {
foo();
}
public bar3() {
foo();
}
}
我想在方法bar1()和bar3()中对foo()的调用切入点
我在想类似
pointcut fooOperation(): call(public void Parent.foo() && (execution(* Child.bar1()) || execution(* Child.bar3()) );
before() : fooOperation() {
//do something else
}
但是,这似乎不起作用。有任何想法吗?
谢谢
最佳答案
也许withincode
可以工作:
call(public void Parent.foo()) && (withincode(* Child.bar1()) || withincode(* Child.bar3()) );
或者,您可以尝试
cflow
切入点:pointcut bar1(): call(* Child.bar1());
pointcut bar3(): call(* Child.bar3());
call(public void Parent.foo()) && (cflow(bar1()) || cflow(bar3());
在这里寻找pointcut reference
关于java - AspectJ指向特定方法中的方法调用的切入点,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6500399/