java—有没有改进这个切入点的方法?

yrdbyhpb  于 2021-07-05  发布在  Java
关注(0)|答案(1)|浏览(372)

我提出了以下用于跟踪方法入口/出口的切入点。它没有坏,也做了我想要的,但: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 * *(..) ));

有什么想法吗?

0yg35tkg

0yg35tkg1#

它远比它需要的复杂。
我会把它分成两部分:
所有方法调用异常tostring()
所有方法都调用exception@nottraced及其后代。
然后你可以使用 && 在同一方面有两个切入点。
这样你可以有更大的灵活性,以防你需要在其他地方使用其中之一。
我将非常简单地开始,并在eclipse中使用ajdt,监视哪些连接点受到影响,以获得所需的最小值。
现在,你似乎有冗余,例如 !adviceexecution() 以及 !cflow(adviceexecution) ,因为您在三个不同的地方重复了cflow和execution。
ajdt将是你的朋友在这里,因为它很难准确地告诉你可能排除你想要的,例如。
保持它非常简单,以避免任何不必要的影响。

相关问题