TOP比較データ> Seasar2におけるDIの仕組みと設定方法
徹底比較!!DIxAOPコンテナ
DIxAOPコンテナ「Seasar2とSpring」

第3回:Seasar2の導入によるDIの実現
著者:豆蔵  長谷川 裕一、竹端 進   2005/11/16
前のページ  1  2  3   4  次のページ
Seasar2におけるDIの仕組みと設定方法

   それでは、サンプルから少し離れてSeasar2のDIの仕組みとDIの設定方法を解説しましょう。
DIの仕組み

   Seasar2がDIを実現する仕組みはS2ContainerFactoryとS2Containerによって実現されます。

   S2ContainerFactoryは、実行時にわたされる定義ファイルを解析してS2Containerを生成します。DIの利用者はS2Containerを利用してコンポーネントの取得を行います。DIの利用者はテストなどの場合を除き、S2ContainerFactory、S2Containerを直接利用することは少ないでしょう。

   WebアプリケーションなどではS2ContainerServletからS2ContainerFactoryが呼び出されます。また、サンプルで使用したS2StrutsServletは内部でS2ContainerServletを呼び出しています。

リスト8:S2ContainerFactoryの利用方法
S2Container container = S2ContainerFactory.create("定義ファイル.xml");
インタフェース名 オブジェクト名 =
     (インタフェース名) container.getComponent("コンポーネント名");
定義ファイル

   定義ファイルはXMLファイルとして記述されます。リスト9は定義ファイルの記述例です。

リスト9:定義ファイルの記述例
<components>
     <component name="オブジェクト名A" class="パッケージ名.クラス名A">
          <property name="変数名1">"文字列1”</property>
          <property name="変数名2">"文字列2”</property>
     </component>
     <component name="オブジェクト名B" class="パッケージ名.クラス名B">
     </component>

     <component name="オブジェクト名C" class="パッケージ名.クラス名C">
          <property name="変数名3">オブジェクト名B</property>
     </component>
</components>

   次に、さらに詳しいタグの利用方法について解説します。


componentタグ

   componentタグは、DIxAOPコンテナが管理するオブジェクトの設定を行うものです。componentタグに設定できる代表的な属性を表4に示します。

属性 意味
name オブジェクト名
class nameの実態。パッケージ名+クラス名
instance コンポーネントのインスタンス管理方法を指定。
"singleton(デフォルト)/prototype/outer/request/session"の各方法を指定可能
autoBinding コンポーネントの依存関係の解決方法を指定。
"auto(デフォルト)/constructor/property/none"の各方法を指定可能

表4:componentタグの属性


依存関係の設定例

   表5はオブジェクト間の依存関係を定義ファイルで行う代表的な例です。

依存関係の設定例
表5:依存関係の設定例


定義ファイルの分割

   Seasar2は定義ファイルを分割することができます。

   定義ファイルが大きくなると可読性が悪くなり管理するのが大変です。そこで開発チームを複数に分けるときには、定義ファイルも複数に分ける必要があります。

   リスト10はサンプルのWebアプリケーションで複数の定義ファイルを設定している例です。Seasar2では定義ファイル"app.dicon"がS2Containerのルートとなる定義ファイルになりますので、このファイルに分割した定義ファイルをincludeタグで記述します。

リスト10:定義ファイルの分割例
<components>
     <include path="s2struts.dicon"/>
     <include path="jp/co/thinkit/employee/dicon/employee.dicon"/>
</components>
前のページ  1  2  3   4  次のページ


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


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


INDEX
第3回:Seasar2の導入によるDIの実現
  サンプルを用いたSeasar2によるAADL3への道
  宣言トランザクション管理
Seasar2におけるDIの仕組みと設定方法
  トランザクションの設定