倭マン's BLOG

くだらない日々の日記書いてます。 たまにプログラミング関連の記事書いてます。 書いてます。

アスペクト・ライブラリを作る 其ノ壱 -- サンプル

アスペクト指向プログラミングの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」の箇所を参照。