我已经提出了以下用于跟踪方法进入/退出的切入点。它没有被打破,也做我想要的但是: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 * *(..) ));
有什么想法吗?
答案 0 :(得分:1)
它远比它需要的复杂得多。
我会把它分成两部分:
然后,您可以使用&&
将两个切入点放在同一方面。
通过这种方式,您可以获得更大的灵活性,以防您需要在其他地方使用其中一种。
我会从非常简单的开始,并在Eclipse中使用AJDT来监控受影响的连接点,以获得获得所需内容的最低要求。
现在,您似乎在这里有冗余,例如!adviceexecution()
和!cflow(adviceexecution)
,因为您在三个不同的地方重复了cflow和执行。
AJDT将成为你的朋友,因为很难准确地说出你想要排除的东西,例如。
保持简单,避免任何不良影响。