私はSpring AOPの初心者です。私はその背後にある概念を理解しており、@Before または @After などの使用法の概念も理解しています。私がとても混乱しているのは、Spring AOP の使用です。クラスの以下のメソッドを考えてください。
public void test(int x) {
:
x++;
logger.info("This is a test" + x);
:
try {
:
} catch (Exception e) {
throw new ...
}
:
}
ログをキャプチャする古い方法は、上記のとおりです。ここに私の質問があります:
Spring AOP を使用して上記のメソッドを実装した場合、このロガーは削除されますが、Spring AOP はこのログ メッセージをキャプチャできますか? (私が知っていることから、Spring AOPはメソッド内を調べません)
条項 1) への回答が「はい」の場合、それはどのように行われますか?
答えが「いいえ」の場合、Spring AOP を使用する意味は何ですか。メソッドの実行前にパラメーターなどの情報を取得する場合を除き、@Before の使用は役に立ちません。ほとんどの場合、メソッド自体の内部で何らかのログを取得したいと考えています。
AspectJのことは忘れてください。AspectJが上記の仕事をできることは知っています。メソッド内でログをキャプチャするという非常に基本的なことを実行できない場合、Spring AOP を使用する意味を知りたいだけです。
どんな助けでも大歓迎です。
さらに注意:
Spring AOP を実装した後、上記のコードは次のようになると思います。ロガー呼び出しは、アスペクト クラスによって処理されるため、テスト メソッドには含まれなくなりました。それが AOP の目的ではないでしょうか。オブジェクトから横断的な懸念を取り除き (オブジェクトの実際のサービスとは関係がないため)、アスペクト クラスによって処理されるには?
public void test() {
:
try {
:
} catch (Exception e) {
throw new ...
}
:
}
Spring AOP がこれを実行できない場合、AOP を使用する意味は何ですか?