−超入門以前−


なんか色んな意味でちょうど良い機会なので、AspectWerkz入門を
始めようと思います。つながり的には、AspectJ5までつなげられたらと。
もうAspectWerkzとしては、リリースはないんだけどねえ、ま、いいか。


AspectWerkzは、静的・動的の両方をサポートするAOPフレームワークです。
AspectJのような静的なものだけでなく、S2AOP・SpringAOPのような
動的なやつだけでもない、両方サポートしている、そんなやつです。
ちらっと見た感じだと、色々サポートしてるけど・・・
日本語の情報は本当に少ない、少ないっすねえ〜


まずはhttp://aspectwerkz.codehaus.org/から、ダウンロード。
ん、AspectWerkzもCodehausなのか。。。。最近勢いあるなあー。


Eclipseからいじりたいので、Eclipseプラグインを入れます。


ドキュメント上は、Eclipse3.0と、3.1M4で動いてるみたい。
プラグインのサイトは以下のとおり。


うーーむ、Eclipse上からAspectがかからん罠。
Sampleはきちんとかかってるんだけどなあ〜。。。

Aspectはweavingされている模様。
ただ結果は同じだ・・・・。うーむ、Eclipseプラグインが正しく動いてないのか?


とりあえず、今日の成果(?)


アスペクトされるクラス。このgreetメソッドにポイントカットを仕込みます。


package org.shotd.dev.aop.aspectwerkz.sample;

public class HelloWorld {

public String greet(){
return "Hello world.";
}

public static void main(String[] args){
HelloWorld greeter = new HelloWorld();
System.out.println(greeter.greet());
}
}


続いて、Aspectクラス。AspectWerkzは、POJOで記述できるみたいです。
ただし、JoinPointまたはStaticJoinPointを引数で渡さなくては
ダメみたい。


package org.shotd.dev.aop.aspectwerkz.sample;

import org.codehaus.aspectwerkz.joinpoint.JoinPoint;

public class SimpleGreetAspect {

public void beforeGreet(JoinPoint jp){
System.out.println("Before greeting......");
}

public void afterGreet(JoinPoint jp){
System.out.println("After greeting......");
}
}


これらを結びつけるaop.xmlという設定ファイルです。
明示的に記述するのは多少面倒くさいが、いいんじゃないでしょうか。
では、typeを指定できて、before、after、aroundなんかがあるようです。














で、、、これでうまくいってりゃあいいんですが、
Eclipse上からはweavingがかからんのです(T_T)


うーむ、できてしまった(^o^)/
どうやら、pointcutで指定するexpressionの中は、FQDNらしい。
うそーん。その上の階層のpackageとか書いてるのに?
若干面倒くさい。


プラス、JDKを1.4.2におとしました。まあ、これは必要なかったかもしれん。
次回への布石もかねて。


まあ、とりあえず一歩目終了。
次回はAnnotaionの予定。なんか前途多難だなあ〜