0

メソッドが一致するかどうかを確認するために、org.aspectj.lang.reflect.PointcutExpressionをorg.aspectj.weaver.tools.PointcutExpressionに変換する正しい方法は何でしょうか。

設定:reflect.Adviceメソッドを取得し、それらから対応するPointcutExpressionsを抽出します。次に、特定のメソッド(reflect.Method)がその呼び出しに一致するかどうかを確認します。

私の最初のアイデアは、次のようなPointcutExpressionParserを使用することでした。

pointcutExpressionParser.parsePointcutExpression(reflectPointcutExpression.asString());

ただし、asString()メソッドは一致する必要のあるメソッド宣言のみを提供し、aspectjパターン(呼び出し、実行、設定など)は提供しないため、これはうまく機能しません。

誰かがそれを行う方法について良い考えがありますか?

4

1 に答える 1

1

問題の原因がわかりました。

Advice.getPointcutExpression()実際のポイントカットを文字列 (アドバイスに直接書き込まれている場合) として出力するか、アスペクトで宣言されたポイントカットの署名を出力します。宣言されたポイントカットには次の方法でアクセスできますAJType.getDeclaredPointcuts()

于 2013-02-11T16:48:46.177 に答える