libro
www.tuyano.com
初心者のためのSpring Framework入門

AspectJを利用する (4/5)

作成:2015-07-18 08:30
更新:2015-07-18 08:30

■プログラムを実行する

これでAspectJを利用する準備は整いました。では、Beanを利用してみましょう。com.tuyano.libro.aopパッケージのAppクラス(前回、使いましたね)を下のリスト欄のように書き換えて下さい。

これを実行すると、以下のように出力がされるでしょう。
before:
after:
before:
after:
before:
message:[<<this is AOP bean!>>]
after:

ここでは、getMessageでメッセージを取得し、それを元にsetMessageでメッセージを設定し、それからprintMessageで内容を出力しています。それぞれのメソッドを呼び出すごとに、その実行前と実行後にbefore/afterが出力されていることがわかるでしょう。

前回のSpring AOPとの決定的な違いは、getBeanで取り出し実行するクラスです。Spring AOPでは、ProxyFactoryBeanを取得することでモディファイされたSampleAopBeanが得られるようになっていました。

が、今回、getBeanしているのはSampleAopBeanです。つまり、SampleAopBeanそのものが改変され、メソッドが挿入されているのです。

動作を確認したら、aopbean.xmlを開き、<aop:aspectj-autoproxy />タグを削除して下さい。そして実行すると、今度は「message:[<<this is AOP bean!>>]」だけが表示されます。before/afterに挿入されたはずのメソッドが消えていることがわかるでしょう。

このように、AspectJを使えば、オートプロキシのON/OFFだけで、アスペクトの処理の挿入や削除が簡単に行えてしまいます。使用するBeanをプロキシーBeanから元に戻したりすることもありません。

※プログラムリストが表示されない場合

AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。

●プログラム・リスト●

package com.tuyano.libro.aop;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class App {

    public static void main(String[] args) {
        ApplicationContext app = new ClassPathXmlApplicationContext("aopbean.xml");
        
        SampleAopBean bean = (SampleAopBean) app.getBean("sampleAopBean");
        String msg = bean.getMessage();
        bean.setMessage("<<" + msg + ">>");
        bean.printMessage();
    }

}

※関連コンテンツ

「初心者のためのSpring Framework入門」に戻る