从aspectj中排除特定的方法调用(在另一个方法中)

时间:2014-03-25 11:28:14

标签: spring aop aspectj spring-aop

我正在尝试将其他方法中的特定方法调用排除在拦截之外:

public Class A {
   public void foo1() {...}

   public void foo2() {
     foo1();
   }

}

我只想排除从foo2发出的foo1调用,而不是其他调用:someAObject.foo1()&应该包含someAobject.foo2()。

有谁知道如何使用spring aop做到这一点? 谢谢!

2 个答案:

答案 0 :(得分:0)

这应该有效:

execution(* A.*(..)) && !execution(* A.foo2(..))

答案 1 :(得分:0)

我建议你停止使用spring,除非你可以为每个电话写两条建议,你可以在第一个和ThreadLocal<Boolean>设置一个proceed,并检查它第二个,不是proceed,如果它的设置。非常丑陋的黑客。