相关疑难解决方法(0)

执行比 呼叫加入点

我有两个不同的方面类来计算执行测试程序的非静态方法调用的数量.第一个方面计算"呼叫"连接点的方法:

pointcut methodCalls() : call (!static * test..*(..));
before(): methodCalls() {
        counter.methodCallCounter();
}
Run Code Online (Sandbox Code Playgroud)

而第二个方面计算"执行"连接点的方法:

pointcut methodCalls() : execution (!static * test..*(..));
before(): methodCalls() {
        counter.methodCallCounter();
}
Run Code Online (Sandbox Code Playgroud)

methodCallCounter()是计数器类中的静态方法.

小测试程序的方法调用次数是相同的.但是当我用更大的程序更改测试程序时,第二个方面类(带执行切入点)中的方法调用数量大于带有调用切入点的方面类中的方法调用数.这是合理的,因为调用连接点不会选择使用super进行的调用,因此不会对它们进行计数.

但是,我遇到了一种情况,对于程序的特定执行,具有"调用切入点"的方面类中的非静态方法调用的数量高于具有"执行切入点"的方面类中的方法调用的数量.我找不到任何解释为什么会发生这种情况.任何关于第二种情况的原因的想法都值得赞赏.

aspectj

21
推荐指数
2
解决办法
2万
查看次数

标签 统计

aspectj ×1