株式会社ラクス  ITエンジニア総合支援サイト スタックアスタリスク フルマネージド専用サーバー エクスユニット
ITエンジニアとして 知る 学ぶ
 
Java
.NET
PHP
プログラミング一般
DataBase
システム/サーバ構築
システム/サーバ運用
技術系一般知識
そのまま使えるシリーズ
J2EE TIPS
 
The Apache Ant Project
Sun MicroSystems
The Apache Jakarta Project
Caucho Technology
eclipse.org
>IT技術情報>Java>DIコンテナSeasar2を用いたWebアプリケーション作成第1回:Seasar2のDI機能、AOP機能を試す
【連載 】DIコンテナSeasar2を用いたWebアプリケーション作成

第1回:Seasar2のDI機能、AOP機能を試す

 
Seasar2は、Seasarファウンデーションによって開発が進められているAOP機能を備えたDIコンテナです。本連載では、Seasar2をWebアプリケーション開発に適用する1つのシナリオをご紹介します。第一回は、Seasar2のDIコンテナ/AOP機能を利用してみます。

ヒューマンリソース事業部
株式会社アイティーブースト
2005/12/8
【著者プロフィール】
スクール運営で培った育成ノウハウを元に、システム開発、ネットワーク分野の人材育成、派遣を行なっています。
 

【 目次 】
1. はじめに
2. DIコンテナ/AOPとは?
2.1. DIコンテナ
2.2. AOP(Aspect Oriented Programming)
3. Seasar2を知る
4. S2Container
4.1. S2Container用環境構築
4.2. DI機能、AOP機能を試す
5.おわりに

【動作環境】
Eclipse3.1.1
Seasar2.3.4
J2SE SDK5.0update5

1. はじめに

システム構築の現場にもっと『易しさ』と『優しさ』を

Seasar2は、こんな願いが込められた、Seasarファウンデーションによって開発が進められているAOP機能を備えたDIコンテナです。

本稿では、ホントに『易しさ』と『優しさ』が得られるのかな?という期待を込めて、0からSeasar2を用いて簡単なWebアプリケーションを作成するまでに行なったことをご紹介します。

この記事は、JavaでWebアプリケーションは作ったことがあり、Seasar2にも興味がある、という方を対象にしています。(この原稿を書きはじめる前の筆者のような人) そして、Seasar2の細かいところまで理解するというよりも、Seasar2をWebアプリケーション開発で利用するきっかけを掴んでいただければと思っています。

2. DIコンテナ/AOPとは?

DIコンテナやAOPは、最近とてもよく目にするキーワードです。Seasar2の紹介に先立ち、簡単にその概要とメリットを紹介しておきます。

2.1. DIコンテナ

DIコンテナの役割として、まず上げられるのは、「コンポーネント間の依存関係を小さくする」ことです。(コンポーネントはある機能を提供するクラス(群)を指します。)

コンポーネントが二つあり、あるコンポーネントAがもう一方のコンポーネントBを利用しているとします。2つのコンポーネントの依存関係が大きければ、Bが完成していない状態では、Aの動作確認が全く出来なかったり、Bへの変更によって、Aが大きく影響を受けたりしてしまいます。


例えば、サーブレットコンテナとサーブレットの関係でも、サーブレットコンテナは大きくサーブレットに依存しており、サーブレットコンテナが無い状態では動かしてみることができません。


DIコンテナを用いると、「ソースコード中では、コンポーネント間の依存関係は小さく記述」しておき、DIコンテナによって、「実行時にコンポーネント間の依存関係を挿入する」ことができるようになります。



結果、以下のようなメリットが得られます。

  • コンポーネント単位でのテストがしやすくなる
  • 他のコンポーネントに対して変更による影響が及びにくくなり、変更に強くなる
  • コンポーネントの独立性が高まることにより、再利用性が高くなる

2.2. AOP(Aspect Oriented Programming)

AOP(アスペクト指向プログラミングは、OOP(オブジェクト指向プログラミング)の延長にあるものです。

オブジェクト指向プログラミングは、人間の認識している概念を、プログラミングの中でも、そのままの形でオブジェクトとして表現しようとするプログラミング手法です。 オブジェクト指向では、システムを実現するための役割を、各オブジェクトに振り分けていきます。

その際、クラス定義の中にオブジェクトが持つべき本質的な役割ではなく、しかも複数のクラスに必要とされる役割が入りこんでしまうことがあります。典型的なものが、ロギング処理や、データベースアクセスにおけるトランザクション処理などです。このような役割は「横断的な関心事」と呼ばれます。

アスペクト指向プログラミングでは、このような「横断的な関心事」を分離して、各クラスには本質的な役割のみを記述させます。そして、AOP処理系がオブジェクトと横断的な関心毎の結びつけ(織り込み)を行ないます。 この横断的な関心毎を実装したコードは、「Advice」もしくは「Interceptor」と呼ばれます。

下図は、AOP処理系によってビジネスロジックを実装したオブジェクトに、ロギングを行なうInterceptorを織り込んだ例です。ビジネスロジックだけが書かれたオブジェクトに、AOP処理系によってロギング処理を織り込んでいます。


ロギング処理は、ビジネスロジックの処理(メソッド)の最初と最後に織り込まれています。この、織り込む場所のことを「pointcut」といいます。

AOPを行なうことで、以下のようなメリットが得られます。
  • クラス定義にオブジェクトの本質的な役割の記述のみ記述されるため、プログラムがシンプルで分かりやすくなる
  • 横断的な関心事が分離され、まとめて管理できるため再利用性、変更への耐性が高くなる
※AOPについては、以下の原稿もよろしければ参考にしてみてください。

初めてのAspect指向プログラミング
http://www.stackasterisk.jp/tech/java/aspect01_01.jsp



▼Java や Linux を体系的に学びましょう!▼
Stack*のラクスが、
新学習方式のカリキュラムを開発しました!
14700円から(*1)、Java や Linux を体系的に学べます!!
(*1 テキスト代のみの税込料金です)


>>次のページへ

【 ページ 】 | 1 | 2 | 3 |
 

サイト内全文検索
スタックアスタリスクのサイトを検索します。検索には、Googleを利用しています。そのため、最新の情報で検索されない可能性があります。


簡単レンタルメールフォーム
300メガ1000円〜 XBitのレンタルサーバー
500メガ1995円〜 電話サポート/PostgreSQL/専用SSLなどにも対応!お客様のニーズを網羅したレンタルサーバ
ホームページ制作のアシストウェブ
STACK* 執筆の講師陣から習得する!! ITエンジニアスクール アイティブースト
統合メールサポートシステム 〜MailDealer(メールディーラー)〜
システム開発,IT教育 〜株式会社アイティーブースト(ITBoost)〜
簡単 営業支援/顧客管理ツール Easy Sales
  利用規約 お問い合わせ・ご意見 スタックアスタリスクについて 運営会社について 
  レンタルサーバー ホスティング 専用サーバー メールフォーム ショッピングカート メール共有 ITエンジニア派遣 Linux講座 Java講座 メール配信 レンタルサーバー Webデータベース 検索サービス
CopyrightcRAKUS Co.,Ltd. All Rights Reserved.  メール管理・共有 顧客管理(CRM)もできるメール対応サポートシステム JAVA LINUX CISCO 技術者派遣 育成事業 株式会社ラクス