3

ログに記録する必要があるトレース アスペクトがあります。

  • 入る
  • 終了中 (戻り値の型は void)
  • 返品[返品対象]
  • throwing [例外メッセージ]

2番目に問題があります。@After アドバイスが 1 つと @AfterReturning(value = "publicMethodCall()", return = "o") が 1 つある場合のように、何かを返すすべての出口を二重ログに記録せずに、この場合のアドバイスを作成するにはどうすればよいですか。 . どうにかして@AfterReturningアドバイスをvoidリターンに対して呼び出し、それが返されたときにその値を取得することはできますか?

これは簡単だと思いますが、わかりません...

4

1 に答える 1

3

アドバイスの周りで使用する方が簡単です。1 つのポイントカット/アドバイスのペア。(私はそれを好むので、ここではコードスタイルのaspectj構文を使用しています)。必要に応じて @AspectJ スタイルに翻訳できます。

Object around() : publicMethodCall() {
  try {
    Object result = proceed();
    log(result, thisJoinPoint);
    return result;
  } catch (Throwable t) {
    log(t, thisJoinPoint);
    throw t;
  }
}

ここで、メソッドが void を返す場合、 は にresultなりますnull

于 2010-10-19T20:16:25.160 に答える