特定方法中方法调用的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
}

然而,这似乎并不奏效。有什么想法吗?

感谢

也许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());

在此处查找切入点参考

想一想,你想要的不是执行子句(这有一个额外的缺点,即需要为每个新的调用者添加),而是使用target,例如:

target(Child) && call(public void Parent.foo()).

令人惊讶的是,我发现eclipse文档中的切入点指南非常有用。他们在这里。

最新更新