AspectJ切入特定方法中的方法调用
我想创建一个切入点来定位从特定方法调用方法。
采取以下措施:
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 }
然而,这似乎不起作用。 有任何想法吗?
谢谢
也许内部代码可以工作:
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());
在这里查看切入点参考
认为你想要的不是执行执行子句(它有一个额外的缺点,即需要为每个新调用者添加),就是使用目标,例如:
target(Child) && call(public void Parent.foo()).
有点令人惊讶的是,我发现eclipse文档中的切入点指南非常有用。 他们在这里 。