1

我想出了以下用于跟踪方法进入/退出的切入点。它没有损坏,也可以满足我的要求,但是: 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 * *(..) ));

有什么想法吗?

4

1 回答 1

1

它比它需要的复杂得多。

我会把它分成两部分:

  1. 所有方法调用异常 toString()
  2. 所有方法都调用异常 @NotTraced 及其后代。

然后,您可以使用 an&&在同一方面拥有两个切入点。

这样您就可以拥有更大的灵活性,以防您需要在其他地方使用其中之一。

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

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

AJDT 将在这里成为您的朋友,因为很难准确说出您可能会排除您想要的内容。

保持非常简单,以避免任何不必要的影响。

于 2009-10-31T22:57:19.380 回答