我提出了以下用于跟踪方法入口/出口的切入点。它没有坏,也做了我想要的,但:1-我发现它看起来笨拙或可以更优雅;我不知道它是不是防弹的。
// 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条答案
按热度按时间0yg35tkg1#
它远比它需要的复杂。
我会把它分成两部分:
所有方法调用异常tostring()
所有方法都调用exception@nottraced及其后代。
然后你可以使用
&&
在同一方面有两个切入点。这样你可以有更大的灵活性,以防你需要在其他地方使用其中之一。
我将非常简单地开始,并在eclipse中使用ajdt,监视哪些连接点受到影响,以获得所需的最小值。
现在,你似乎有冗余,例如
!adviceexecution()
以及!cflow(adviceexecution)
,因为您在三个不同的地方重复了cflow和execution。ajdt将是你的朋友在这里,因为它很难准确地告诉你可能排除你想要的,例如。
保持它非常简单,以避免任何不必要的影响。