Q2:AspectJ の使い方は?

1. AspectJ のダウンロード

AspectJ の Web サイトから媒体をダウンロードする。執筆時点の最新版は、1.1.1です。

2. AspectJ のインストール

以下のコマンドでインストールする(以後 AspectJ のインストールディレクトリを %ASPECTJ_HOME% とする)
% java -jar aspectj-1.1.1.jar 
後のビルドをコマンドラインから行う場合は、%ASPECTJ_HOME%/bin へパスを通しておくと良い。

3. Aspect の作成

AspectJ の文法に従ってアスペクトを記述します。Java と同じように、パッケージを作成し、その中へ拡張子を .java として作成する。Java ソースと同じ感覚で作成/配置すればよい。以下はサンプルアスペクトです。パッケージが logtest.aop.aspect なので、例えば src/logtest/aop/aspect/MethodTraceForAll.java として作成します。
package logtest.aop.aspect;

import org.apache.log4j.*;

aspect MethodTraceForAll {
        
    private static final Logger logger = 
        Logger.getLogger("logtest.aop.aspect.MethodTraceForAll");
    pointcut methodTrace(): execution(* *.*(..));

    before(): methodTrace() {
        logger.debug("entering:" + thisJoinPoint);
    }
    after(): methodTrace() {
        logger.debug("exiting:" + thisJoinPoint);
    }
}

4. コンパイル

コンパイルには、AspectJ の javac 互換コンパイラ ajc を使います。ここでは Ant を使ってビルドする方法を紹介します。
以下ように build.xml を作成します。
<project name="simple-example" default="compile" >
  <taskdef 
      resource="org/aspectj/tools/ant/taskdefs/aspectjTaskdefs.properties">
    <classpath>
      <pathelement location="${home.dir}/tools/aspectj/lib/aspectjtools.jar"/>
    </classpath>
  </taskdef>

  <target name="compile" >
    <iajc sourceroots="${home.dir}/ec/project/src"
          destDir="${classes}" 
          classpath="${home.dir}/tools/aspectj/lib/aspectjrt.jar"/> 
  </target>
</project> 
aspectjtools.jar は Ant の lib フォルダへ格納しておけば記述不要です。後は ant で compile ターゲットを実行すればOKです。sourceroots にはアスペクトと通常の Java ファイルが格納されたフォルダ(のルート)を指定すれば、destDir で示した場所へアスペクトが織り込まれたクラスファイルが生成されます。

トップページへ戻る