post-compile weaving 実践メモ
AspectJ (Springに統合された?)による post-compile weaving を実践したのでメモ。
jarに固められ済みのものに自由に追記できちゃうわけで、悪用にならないように要注意。
ウィービングのタイミングの種類
以下の3種類のタイミングがある。
AOPコード
ポイントカット
織り込み対象のメソッドを指定して定義する。プライベートメソッドも指定可能。
@Pointcut("execution (void test.Main.method1(..)) && args(str)") public void method1PointCut(String str) {}
※ポイントカットの文法は「Springのポイントカットの記法詳細 - oknknicの日記」を参照。
アドバイス
上記で定義したポイントカットを指定する。引数リストの末尾にJoinPointを受け取ることができる。
@After("method1PointCut(str)") public void advice1(String str, JoinPoint joinPoint) { // 任意の処理 }
ウィービング手順
1. AspectJのインストール。手順は「AspectJのインストール」を参照。
2. ウィービング実施
SET CLASSPATH=%ASPACRJ_HOME%\lib\aspectjrt.jar;%ASPACRJ_HOME%\lib\aspectjtools.jar; SET TARGET=織り込み対象のjarファイルのパス SET ASPECT=織り込むAOPコードのクラスファイルが格納されているディレクトリのパス SET OUT=織り込み後のjarを出力するファイルパス java -cp %CLASSPATH% org.aspectj.tools.ajc.Main -source 1.6 -inpath %TARGET%;%ASPECT% -outjar %OUT%