アスペクト指向プログラミングの1つの使用法として、「既存のライブラリにアスペクトを織り込んで、機能を拡張する」というものがあります。 この織り込む機能を実装した AspectJ コード(と成果物)を「アスペクト・ライブラリ」と呼びましょう。
今回から何度かに分けて、Maven2 プロジェクトを用いてアスペクト・ライブラリを作成、または使用する方法を見ていきます*1。
今回は、機能を拡張したいサンプル・ライブラリのプロジェクトを載せるだけです。 アスペクト・ライブラリの作成は次回以降。 既存のライブラリは「greeting」とします。
pom.xml
至って単純な Maven2 プロジェクト。
<project> <modelVersion>4.0.0</modelVersion> <groupId>org.sample</groupId> <artifactId>greeting</artifactId> <packaging>jar</packaging> <version>0.1</version> </project>
Java クラス:Person
Person クラスは、名前を保持し、greet() メソッドが呼び出されたら「Hello, world !」と表示するクラスです:
package greeting; public class Person { private final String name; public Person(String name){ this.name = name; } public String getName(){ return this.name; } public void greet(){ System.out.println("Hello, world !"); } }
実行クラス ExampleMain と実行結果
上記の Person クラスを使用したサンプル・コードです。 これはライブラリには含まれません。
package greeting; public class ExampleMain { public static void main(String[] args) { Person ken = new Person("Ken"); ken.greet(); } }
これを実行すると、以下のメッセージが表示されます:
Hello, world !
ローカル・リポジトリへインストール
プロジェクトが完成したら、ローカル・リポジトリへインストールしましょう:
mvn clean install
*1:AspectJ のコンパイル&織り込みツール「ajc」を用いてアスペクト・ライブラリを作成する方法は、ajc のドキュメントの「Example 2.3. An example using -inpath and -aspectpath」の箇所を参照。