TOP比較データ> EmployeeS2DaoへのAOP適用
徹底比較!!DIxAOPコンテナ
DIxAOPコンテナ「Seasar2とSpring」

第6回:Seasar2によるAOPの導入
著者:豆蔵  長谷川 裕一、竹端 進   2006/1/11
前のページ  1  2  3  4
EmployeeS2DaoへのAOP適用

   最後に、EmployeeS2Daoに独自に実装を行ったトレースログを追加します。
Adviceの作成と定義ファイルの修正

   EmployeeManagerImplではSeasar2の提供するTraceInterceptorを利用しましたが、EmployeeS2DaoにはAroundAdviceとして独自実装のトレース処理"TraceAdvice"を追加します(リスト10)。

リスト10:EmployeeDaoImpl用のトレース処理
public class TraceAdvice implements MethodInterceptor {
     private static final Log log = LogFactory.getLog(TraceAdvice.class);

     public Object invoke(MethodInvocation invocation) throws Throwable {
          String methodName = invocation.getMethod().getName();
          String className = invocation.getThis().getClass().getName();

          log.trace("*** Start : " + methodName + "' of class [" + className + "]");
          Object ret = invocation.proceed();
          log.trace("*** End : " + methodName + "' of class [" + className + "]");
          return ret;
     }
}

   またリスト11はコンポーネント定義ファイルのEmployeeS2Daoに関連する設定部分です。リスト11の(2)は、独自のトレース処理として実装したTraceAdviceのコンポーネント定義です。

   リスト11の(3)は、EmployeeManagerImplでの設定と同様にInterceptorChainを使用してTraceAdviceとdao.interceptorをコンポーネント"daoAop"として定義しています。

   リスト11の(1)は、コンポーネント"daoAop"をEmployeeS2Daoのすべてのメソッドに適用しています。

リスト11:EmployeeDaoImpl用のAOP設定
リスト11:EmployeeDaoImpl用のAOP設定
(画像をクリックすると別ウィンドウに拡大表示します)

   以上でEmployeeS2Daoに対するAOPの適用は終了です。ここまで解説したAOPの動作確認は第5回で紹介したサンプルを動かすことで可能です。

Seasar2版
Text  sample_apli2_seasar2.zip
  (ZIPファイル/3.80MB)

Spring版
Text  sample_apli2_spring.zip
  (ZIPファイル/5.35MB)


Seasar2のまとめ

   今回の連載ではSeasar2のAOPを駆け足でみてきました。Seasar2のAOPの概要とシンプルな使用感を感じ取っていただけたでしょうか。

   Seasar2のDIの回でも述べましたが、Seasar2のスタンスは定められたルールの元で開発者の作業負担を減らすことです。Seasar2のAOPもまた、そのポテンシャルと使用負荷のバランスがうまく実現できていると思います。

   今回の連載ではバージョン2.2.10を使用しましたが、それ以降のバージョンではさらにに便利な機能が追加されています(表6)。ぜひそれらのバージョンもダウンロードして、その内容を確かめてみてください。

項目 説明
コンポーネントの自動登録 定義ファイルに個別のコンポーネント情報を記述することなく、コンテナにコンポーネントを自動登録することが可能
アスペクトの自動登録 定義ファイルに個別のコンポーネント記述することなく、コンポーネントにアスペクトを自動登録することが可能
アノテーションによる設定 自動登録でうまく設定ができない場合、アノテーションを利用して設定可能

表6:新バージョンで追加された機能

   次回はいよいよ連載の最終回、SpringのAOPの回になります。お楽しみに!

前のページ  1  2  3  4


株式会社豆蔵 長谷川 裕一
著者プロフィール
株式会社豆蔵  長谷川 裕一
XMLの技術開発やCORBA、EJBを使用したシステム開発などを経て、現在はアジャイル開発プロセスの導入から工学的なソフトウエアプロセスの策定、オープンソースプロダクトに関するコンサルタント、アーキテクトとして常に第一線で活躍。共著として「プログラムの育てかた 現場で使えるリファクタリング(ソフトバンク)」、「Spring入門(技術評論社)」。


株式会社豆蔵 竹端 進
著者プロフィール
株式会社豆蔵  竹端 進
鉄鋼系SIerを経て現職に。現在はオープンソースプロダクトに関するコンサティング、開発支援、教育を行うチームに所属。日々、新たな技術をどのように生かしていくかを考える毎日。現在の注目対象はSeasar2とMaven。


INDEX
第6回:Seasar2によるAOPの導入
  Seasar2のAOPについて
  Throw Advice
  サンプルアプリケーションへのAOP適用
EmployeeS2DaoへのAOP適用