最近AspectJ LTWを使い始めました。AJDTで Eclipse を使用しています。私は基本的に「outjar」オプションを使用して、コンパイルされた .aj ファイルで「AspectJ ライブラリ (.jar ファイル)」を作成します。
次のステップは、「通常の」Eclipse Java プロジェクト内でこの jar ファイルを使用することです。このプロジェクトは、javaagent パスに aspectjweaver.jar ライブラリがあれば完璧に動作します。
-javaagent:lib/aspectjweaver.jar
私の次の目標は、この「通常の」Java プロジェクト内で2 番目の aop.xml ファイルを使用することです。META-INF/aop.xml
ファイルがクラスローダーの検索パスにある場合でも、これはうまく機能します。今、私はこれを発見しました:
http://www.eclipse.org/aspectj/doc/released/README-1612.html
(「aop.xml でより柔軟なポイントカット/コード ワイヤリング」までスクロールします)
次の XML 仕様は問題なく機能します。
<aspectj>
<aspects>
<concrete-aspect name="MyAspect">
<before pointcut="set(* *.myStringField) AND args(message)"
invokeClass="my.package.SomeRegularJavaClass" invokeMethod="someMethod(JoinPoint tjp, java.lang.String message)" />
</concrete-aspect>
</aspects>
</aspectj>
しかし、私が実際に興味を持っているのは、自分の引数/変数/メッセージを method に「渡す」ことsomeMethod
です。何かのようなもの:
<aspectj>
<aspects>
<concrete-aspect name="MyAspect">
<before pointcut="set(* *.myStringField) AND args(message)"
invokeClass="my.package.SomeRegularJavaClass" invokeMethod="someMethod(JoinPoint tjp, java.lang.String message, java.lang.String "customMessage")" />
</concrete-aspect>
</aspects>
</aspectj>
それで、文字列(たとえば)をメソッドに渡す方法はありsomeMethod
ますか?または、利用可能な他のオプションはありますか?