有没有办法改善这个切入点?

时间:2009-10-31 22:33:56

标签: java execution aspectj pointcuts

我已经提出了以下用于跟踪方法进入/退出的切入点。它没有被打破,也做我想要的但是:1-我觉得它看起来很笨拙或者更优雅;和2-我不知道它是否是防弹的。

// tracing the execution of all methods except:
// - toString and descendants
// - methods identified with @NotTraced and descendants
pointcut theMethod() :
        within(*.*) &&
        !within(tracing.*)
        && execution(* *(..))
        && !adviceexecution()
        && !cflow(adviceexecution())
        && !execution( String *.toString() )
        && !cflow(execution( String *.toString() ))
        && !execution( @NotTraced * *(..) )
        && !cflow(execution( @NotTraced * *(..) ));

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

它远比它需要的复杂得多。

我会把它分成两部分:

  1. 所有方法调用异常 的toString()
  2. 所有方法调用异常 @NotTraced和它的后代。
  3. 然后,您可以使用&&将两个切入点放在同一方面。

    通过这种方式,您可以获得更大的灵活性,以防您需要在其他地方使用其中一种。

    我会从非常简单的开始,并在Eclipse中使用AJDT来监控受影响的连接点,以获得获得所需内容的最低要求。

    现在,您似乎在这里有冗余,例如!adviceexecution()!cflow(adviceexecution),因为您在三个不同的地方重复了cflow和执行。

    AJDT将成为你的朋友,因为很难准确地说出你想要排除的东西,例如。

    保持简单,避免任何不良影响。