私は metrics-aspectj ライブラリを使用してきましたが、メソッドに注釈を付けてパフォーマンス メトリックを取得すると非常に便利であることがわかりました。最近、アノテーション付きのメソッドを持つクラスを拡張しようとしたときに壁にぶつかりました。ここに私が見るものがあります:
@Metrics
public class Base {
public void something_not_timed() {
...
}
@Timed(name="method1-ProcessTime")
public void method1() {
...
}
}
問題なく本番環境で Base クラスを使用しています。次に、このクラスを拡張する必要があります。
public class Derived extends Base {
@Override
public void something_not_timed() {
....
}
}
ご覧のとおり、method1() はオーバーライドされていません。しかし問題は、Derived クラスで method1() を使用するたびに、method1_aroundBody1$advice() で NullPointerException が発生することです。
私は AspectJ に詳しくないので、何が欠けているのか本当にわかりませんでした。アドバイスをいただければ幸いです。
ありがとう!
よろしく、 キャリー