ITコンサルの日常

ITコンサル会社に勤務する普通のITエンジニアの日常です。

JavaでもAOPしてみる(AspectJ使ってみた)

最新のver1.5.4を試してみました。


AspectJのQuick Start的なものは、下記サイトに良くまとまっています。
http://www.02.246.ne.jp/~torutk/aspectj/helloworld.html
3/24追記: 良く見たらLTW(Load Time Weaving)についても書いてありますね。
ただ、アノテーションと設定ファイルの両方が必要ってのはイマイチかもなぁ。
AspectJ派の反論を待ちたいところです。


読んでみたところ、AspectJ言語なる独自言語でげんなり。Java5以降なら、アノテーションで頑張れるらしい。なんとかなるかも?また、

アスペクトコンパイルするときは、ajc(AspectJコンパイラ)コマンドを使用します。ajcコマンドを使うときは、アスペクトを記述したソースファイル(ここではTrace.aj)と、アスペクトを織りこむ対象となるソースファイル(ここではHelloWorld.java)の両方を一緒に指定します。

ということなので、Javaの既存のクラス(昨日の例で言えば、java.util.Dateとか)には使えないということになります。またまたげんなり。
極めつけは、何回やっても

C:\aspectj1.5>java -classpath classes hello.HelloWorld
Exception in thread "main" java.lang.NoClassDefFoundError: org/aspectj/lang/NoAs
pectBoundException
        at hello.HelloWorld.main(HelloWorld.java:12)

C:\aspectj1.5>

で落ちるので、おっかしいなあと思ってたのですが、なんのことはない、aspectjrt.jarがないとダメなのでした。
というわけでランタイムライブラリも要らないかと思いきゃ、結局必要になるというわけでやっぱりげんなり。