我想创建一个切入点,以将特定方法的调用作为目标。

采取以下措施:

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/

10-08 21:46