2005/04/27

続: Annotation Based AOP

http://www-128.ibm.com/developerworks/java/library/j-aopwork3/
http://www-106.ibm.com/developerworks/java/library/j-aopwork4/

1本目の記事は、Version5の形がおもしろい。
public class Customer {
public void setAddress(Address addr) {
}

public void addAccount(Account acc) {
}

public void removeAccount(Account acc) {
}

private static aspect Annotator {
declare annotation: public Customer.*(..): @Transactional;
}
}
こんな感じで、メソッド毎にannotation付けるんじゃなく、内部アスペクトを定義して、アノテーションイントロダクションを使って定義。メソッドに付加されるアノテーションがやたら増えてしまうケース(設計まずいっぽいけど)もありそうだから、可読性のためにこれ使うのはあり。


2本目が本題で、メタデータアノテーションをインターフェースとして使うという概念を明示している。ポイントカットをアノテーションの集合で表現することで、アスペクトのモジュール性が向上する。今後メソッドのシグネチャを頼りにしたAOPは減っていくはず。

0 件のコメント: