私が作成した注釈でマークするメソッドの実行時間を測るのにAOPの概念を使いたいです。しかし、私の問題は、同じクラス内から注釈付きのメソッドを内部的に参照することです。たとえば:AspectJを使うためにSpring AOPを設定するには
public void login(params) {
some logic ...
performLogin();
some logic ...
}
@Measured
public void performLogin() {
some logic ...
}
これは春AOPは、同じクラス内の内線通話を「見ない」プロキシベースのアプローチを使用しているという事実によって引き起こされる既知の問題です。どうやら、私はSpring AOPの代わりにAspectJを使ってこの状況を解決することができます。私が正しく理解していれば、それはSpring自体から構成することができます。私が見つけたことから、@EnableAspectJAutoProxy
注釈を含めて、独自のAOPではなくAspectJを使用するようにSpringを設定する必要があります。残念なことに、それは助けにならず、注釈を追加した後、注釈付き方法の傍受は起こりませんでした。
このトピックについては、Springの参考資料にはたくさんのinformationがあり、少し失われてしまいました。 AspectJが使われるようにするために何か他にはありますか?
P.S.私はクラス全体をリファクタリングすることはできませんし、呼び出し元のメソッドを外部に移動することはできません。
P.P.S.ポイントカットの設定も確認しました。私は外部から呼び出される呼び出しメソッドに注釈を付け、うまくいきました。
こんにちは、お返事ありがとうございます。これはまさに私がやろうとしていることです。ちょうど設定と苦労している。 –
Java設定を使用している場合は、コンフィグレーションのために '@ EnableLoadTimeWeaving'を追加してください。 –
のネイティブAspectJへのリンクもチェックしてください。また、 – JEY