当扩展 class 时,基于 class 的 metrics-aspectj @Timed 方法抛出 NullPointerException

metrics-aspectj @Timed method on base class throws NullPointerException when class is extended

我一直在使用 metrics-aspectj 库,发现注释捕获性能指标的方法非常方便。最近我在尝试扩展带有注释方法的 class 时碰壁了。这是我看到的:

@Metrics
public class Base {
    public void something_not_timed() {
        ...
    }

    @Timed(name="method1-ProcessTime")
    public void method1() {
       ...
    }
}

我一直在生产中使用 Base class,没有任何问题。现在我需要扩展这个 class.

public class Derived extends Base {
    @Override
    public void something_not_timed() {
        ....
    }
}

如您所见,method1() 未被覆盖。但问题是,每当我在 Derived class 中使用 method1() 时,我都会在 method1_aroundBody1$advice().

中得到 NullPointerException

我不熟悉 AspectJ,所以无法真正弄清楚我缺少什么,任何建议将不胜感激。

谢谢!

此致, 卡里

这是 metrics-aspectj 中的错误。不管怎样,你已经为它开了一张票,我注意到了。我已经为这个问题创建了一个小的演示存储库,并在 my answer to your GitHub ticket.

中对其进行了更详细的描述。