org.seasar.framework.container
インタフェース S2Container

すべてのスーパーインタフェース:
MetaDefAware
既知の実装クラスの一覧:
S2ContainerImpl

public interface S2Container
extends MetaDefAware

DIとAOPをサポートしたS2コンテナのインターフェースです。

S2Containerの役割について

コンポーネントの管理を行う機能を提供します。 コンポーネントとは1つかまたそれ以上のクラスで構成されるJavaオブジェクトです。 S2コンテナはコンポーネントの生成、コンポーネントの初期化、コンポーネントの取得を提供します。 コンポーネントを取得するキーには、コンポーネント名、コンポーネントのクラス、またはコンポーネントが実装するインターフェースを指定することができます。

S2コンテナのインスタンス階層について

S2コンテナ全体は複数のコンテナにより階層化されています。 一つのコンテナは複数のコンテナをインクルードすることができます。 複数のコンテナが同一のコンテナをインクルードすることができます。

インクルードの参照範囲についてのイメージを示します。

コンテナの検索順についてのイメージを示します。

S2コンテナのインジェクションの種類について

S2コンテナは3種類のインジェクションをサポートします。

コンストラクタ・インジェクション
コンストラクタ引数を利用してコンポーネントをセットします。
セッター・インジェクション
セッターメソッドを利用してコンポーネントをセットします。
メソッド・インジェクション
任意のメソッドを利用してコンポーネントをセットします。

S2Containerが持つメソッドの分類について

コンテナへの登録、コンテナからのコンポーネント取得、検索などを行うコンポーネントを管理する機能

コンテナの初期化、終了処理、コンテナの階層化、階層化されたコンテナへのアクセスなどコンテナを管理する機能

作成者:
higa, vestige & SeasarJavaDoc Committers

メソッドの概要
 void addParent(S2Container parent)
          親コンテナを追加します。
 void destroy()
          コンテナの終了処理をおこないます。
 ComponentDef[] findAllComponentDefs(java.lang.Object componentKey)
          指定されたキーに対応する複数のコンポーネント定義を検索して返します。
 java.lang.Object[] findAllComponents(java.lang.Object componentKey)
          指定されたキーに対応する複数のコンポーネントを検索して返します。
 ComponentDef[] findComponentDefs(java.lang.Object componentKey)
          指定されたキーに対応する複数のコンポーネント定義を検索して返します。
 java.lang.Object[] findComponents(java.lang.Object componentKey)
          指定されたキーに対応する複数のコンポーネントを検索して返します。
 ComponentDef[] findLocalComponentDefs(java.lang.Object componentKey)
          指定されたキーに対応する複数のコンポーネント定義を検索して返します。
 java.lang.Object[] findLocalComponents(java.lang.Object componentKey)
          指定されたキーに対応する複数のコンポーネントを検索して返します。
 S2Container getChild(int index)
          番号で指定された位置の子コンテナを返します。
 int getChildSize()
          インクルードしている子コンテナの数を返します。
 java.lang.ClassLoader getClassLoader()
          クラスローダーを返します。
 java.lang.Object getComponent(java.lang.Object componentKey)
          指定されたキーに対応するコンポーネントを返します。
 ComponentDef getComponentDef(int index)
          番号で指定された位置のコンポーネント定義を返します。
 ComponentDef getComponentDef(java.lang.Object componentKey)
          指定されたキーに対応するコンポーネント定義を返します。
 int getComponentDefSize()
          コンテナに登録されているコンポーネント定義の数を返します。
 S2Container getDescendant(java.lang.String path)
          pathを読み込んだS2コンテナを返します。
 ExternalContext getExternalContext()
          外部コンテキストを返します。
 ExternalContextComponentDefRegister getExternalContextComponentDefRegister()
          外部コンテキストが提供する コンポーネントを登録するオブジェクトを返します。
 java.lang.String getNamespace()
          名前空間を返します。
 S2Container getParent(int index)
          番号で指定された位置の親コンテナを返します。
 int getParentSize()
          このコンテナをインクルードしている親コンテナの数を返します。
 java.lang.String getPath()
          設定ファイルのpathを返します。
 S2Container getRoot()
          ルートのS2コンテナを返します。
 boolean hasComponentDef(java.lang.Object componentKey)
          指定されたキーに対応するコンポーネント定義が存在する場合trueを返します。
 boolean hasDescendant(java.lang.String path)
          pathを読み込んだS2コンテナが存在する場合trueを返します。
 void include(S2Container child)
          コンテナを子としてインクルードします。
 void init()
          コンテナの初期化を行います。
 void injectDependency(java.lang.Object outerComponent)
          outerComponentのクラスをキーとして登録された コンポーネント定義に従って、必要なコンポーネントのインジェクションを実行します。
 void injectDependency(java.lang.Object outerComponent, java.lang.Class componentClass)
          componentClassをキーとして登録された コンポーネント定義に従って、必要なコンポーネントのインジェクションを実行します。
 void injectDependency(java.lang.Object outerComponent, java.lang.String componentName)
          componentNameをキーとして登録された コンポーネント定義に従って、インジェクションを実行します。
 boolean isInitializeOnCreate()
          コンテナ作成時に初期化する場合trueを返します。
 void register(java.lang.Class componentClass)
          クラスをコンポーネント定義として登録します。
 void register(java.lang.Class componentClass, java.lang.String componentName)
          指定された名前でクラスをコンポーネント定義として登録します。
 void register(ComponentDef componentDef)
          コンポーネント定義を登録します。
 void register(java.lang.Object component)
          コンポーネントを登録します。
 void register(java.lang.Object component, java.lang.String componentName)
          指定された名前でコンポーネントを登録します。
 void registerDescendant(S2Container descendant)
          descendantを子孫コンテナとして登録します。
 void registerMap(java.lang.Object key, ComponentDef componentDef, S2Container container)
          子コンテナ(container)に登録された コンポーネント定義(componentDef)をこのコンテナから検索できるよう コンポーネント定義を管理するマップに登録します。
 void setClassLoader(java.lang.ClassLoader classLoader)
          クラスローダーを設定します。
 void setExternalContext(ExternalContext externalContext)
          外部コンテキストを設定します。
 void setExternalContextComponentDefRegister(ExternalContextComponentDefRegister externalContextComponentDefRegister)
          外部コンテキストが提供する コンポーネントを登録するオブジェクトを設定します。
 void setInitializeOnCreate(boolean initializeOnCreate)
          コンテナ作成時に初期化する場合trueを設定します。
 void setNamespace(java.lang.String namespace)
          名前空間を設定します。
 void setPath(java.lang.String path)
          設定ファイルのpathを設定します。
 void setRoot(S2Container root)
          ルートのS2コンテナを設定します。
 
インタフェース org.seasar.framework.container.MetaDefAware から継承したメソッド
addMetaDef, getMetaDef, getMetaDef, getMetaDefs, getMetaDefSize
 

メソッドの詳細

getComponent

public java.lang.Object getComponent(java.lang.Object componentKey)
                              throws ComponentNotFoundRuntimeException,
                                     TooManyRegistrationRuntimeException,
                                     CyclicReferenceRuntimeException
指定されたキーに対応するコンポーネントを返します。

キーが文字列の場合、名前が一致するコンポーネントを返します。 キーがクラスまたはインターフェースの場合、キーの型に代入可能なコンポーネントを返します。

パラメータ:
componentKey - コンポーネントを取得するためのキー
戻り値:
コンポーネント
例外:
ComponentNotFoundRuntimeException - コンポーネントが見つからない場合
TooManyRegistrationRuntimeException - 同じ名前、または同じクラスに複数のコンポーネントが登録されている場合
CyclicReferenceRuntimeException - コンストラクタ・インジェクションでコンポーネントの参照が循環している場合

findComponents

public java.lang.Object[] findComponents(java.lang.Object componentKey)
                                  throws CyclicReferenceRuntimeException
指定されたキーに対応する複数のコンポーネントを検索して返します。

検索の範囲は現在のS2コンテナおよび、インクルードしているS2コンテナの階層全体です。 キーに対応するコンポーネントが最初に見つかったS2コンテナを対象とします。 このS2コンテナから,キーに対応する全てのコンポーネントを配列で返します。 返される配列に含まれるコンポーネントは全て同一のS2コンテナに登録されたものです。

パラメータ:
componentKey - コンポーネントを取得するためのキー
戻り値:
キーに対応するコンポーネントの配列を返します。 キーに対応するコンポーネントが存在しない場合は長さ0の配列を返します。
例外:
CyclicReferenceRuntimeException - コンストラクタ・インジェクションでコンポーネントの参照が循環している場合
関連項目:
findAllComponents(java.lang.Object), findLocalComponents(java.lang.Object)

findAllComponents

public java.lang.Object[] findAllComponents(java.lang.Object componentKey)
                                     throws CyclicReferenceRuntimeException
指定されたキーに対応する複数のコンポーネントを検索して返します。

検索の範囲は現在のS2コンテナおよび、インクルードしているS2コンテナの階層全体です。 キーに対応するコンポーネントが最初に見つかったS2コンテナとその子孫コンテナの全てを対象とします。 対象になるS2コンテナ全体から、キーに対応する全てのコンポーネントを配列で返します。

パラメータ:
componentKey - コンポーネントを取得するためのキー
戻り値:
キーに対応するコンポーネントの配列を返します。 キーに対応するコンポーネントが存在しない場合は長さ0の配列を返します。
例外:
CyclicReferenceRuntimeException - コンストラクタ・インジェクションでコンポーネントの参照が循環している場合
関連項目:
findComponents(java.lang.Object), findLocalComponents(java.lang.Object)

findLocalComponents

public java.lang.Object[] findLocalComponents(java.lang.Object componentKey)
                                       throws CyclicReferenceRuntimeException
指定されたキーに対応する複数のコンポーネントを検索して返します。

検索の範囲は現在のS2コンテナのみです。 現在のS2コンテナから、キーに対応する全てのコンポーネントを配列で返します。

パラメータ:
componentKey - コンポーネントを取得するためのキー
戻り値:
キーに対応するコンポーネントの配列を返します。 キーに対応するコンポーネントが存在しない場合は長さ0の配列を返します。
例外:
CyclicReferenceRuntimeException - コンストラクタ・インジェクションでコンポーネントの参照が循環している場合
関連項目:
findComponents(java.lang.Object), findAllComponents(java.lang.Object)

injectDependency

public void injectDependency(java.lang.Object outerComponent)
                      throws ClassUnmatchRuntimeException
outerComponentのクラスをキーとして登録された コンポーネント定義に従って、必要なコンポーネントのインジェクションを実行します。 アスペクト、コンストラクタ・インジェクションは適用できません。

コンポーネント定義インスタンス定義outerでなくてはなりません。

パラメータ:
outerComponent - 外部コンポーネント
例外:
ClassUnmatchRuntimeException - 適合するコンポーネント定義が見つからない場合

injectDependency

public void injectDependency(java.lang.Object outerComponent,
                             java.lang.Class componentClass)
                      throws ClassUnmatchRuntimeException
componentClassをキーとして登録された コンポーネント定義に従って、必要なコンポーネントのインジェクションを実行します。 アスペクト、コンストラクタ・インジェクションは適用できません。

コンポーネント定義インスタンス定義outerでなくてはなりません。

パラメータ:
outerComponent - 外部コンポーネント
componentClass - コンポーネント定義のキー (クラス)
例外:
ClassUnmatchRuntimeException - 適合するコンポーネント定義が見つからない場合

injectDependency

public void injectDependency(java.lang.Object outerComponent,
                             java.lang.String componentName)
                      throws ClassUnmatchRuntimeException
componentNameをキーとして登録された コンポーネント定義に従って、インジェクションを実行します。 アスペクト、コンストラクタ・インジェクションは適用できません。

コンポーネント定義インスタンス定義outerでなくてはなりません。

パラメータ:
outerComponent - 外部コンポーネント
componentName - コンポーネント定義のキー (名前)
例外:
ClassUnmatchRuntimeException

register

public void register(java.lang.Object component)
コンポーネントを登録します。

S2コンテナに無名のコンポーネントとして登録します。 登録されたコンポーネントはインジェクションやアスペクトの適用などは出来ません。 他のコンポーネント構築時に依存オブジェクトとして利用することが可能です。

パラメータ:
component - コンポーネント

register

public void register(java.lang.Object component,
                     java.lang.String componentName)
指定された名前でコンポーネントを登録します。

パラメータ:
component - コンポーネント
componentName - コンポーネント名

register

public void register(java.lang.Class componentClass)
クラスをコンポーネント定義として登録します。

登録するコンポーネントは以下のものになります。

インスタンス定義
singleton
自動バインディング定義
auto

パラメータ:
componentClass - コンポーネントのクラス

register

public void register(java.lang.Class componentClass,
                     java.lang.String componentName)
指定された名前でクラスをコンポーネント定義として登録します。

登録するコンポーネントは以下のものになります。

インスタンス定義
singleton
自動バインディング定義
auto

パラメータ:
componentClass - コンポーネントのクラス
componentName - コンポーネント名

register

public void register(ComponentDef componentDef)
コンポーネント定義を登録します。

パラメータ:
componentDef - コンポーネント定義

getComponentDefSize

public int getComponentDefSize()
コンテナに登録されているコンポーネント定義の数を返します。

戻り値:
コンポーネント定義の数

getComponentDef

public ComponentDef getComponentDef(int index)
番号で指定された位置のコンポーネント定義を返します。

パラメータ:
index - 番号
戻り値:
コンポーネント定義

getComponentDef

public ComponentDef getComponentDef(java.lang.Object componentKey)
                             throws ComponentNotFoundRuntimeException
指定されたキーに対応するコンポーネント定義を返します。

パラメータ:
componentKey - キー
戻り値:
コンポーネント定義
例外:
ComponentNotFoundRuntimeException - コンポーネント定義が見つからない場合

findComponentDefs

public ComponentDef[] findComponentDefs(java.lang.Object componentKey)
指定されたキーに対応する複数のコンポーネント定義を検索して返します。

検索の範囲は現在のS2コンテナおよび、インクルードしているS2コンテナの階層全体です。 キーに対応するコンポーネントが最初に見つかったS2コンテナを対象とします。 このS2コンテナから,キーに対応する全てのコンポーネント定義を配列で返します。 返される配列に含まれるコンポーネント定義は全て同一のS2コンテナに登録されたものです。

パラメータ:
componentKey - コンポーネント定義を取得するためのキー
戻り値:
キーに対応するコンポーネント定義の配列を返します。 キーに対応するコンポーネント定義が存在しない場合は長さ0の配列を返します。
関連項目:
findAllComponentDefs(java.lang.Object), findLocalComponentDefs(java.lang.Object)

findAllComponentDefs

public ComponentDef[] findAllComponentDefs(java.lang.Object componentKey)
指定されたキーに対応する複数のコンポーネント定義を検索して返します。

検索の範囲は現在のS2コンテナおよび、インクルードしているS2コンテナの階層全体です。 キーに対応するコンポーネントが最初に見つかったS2コンテナとその子孫コンテナの全てを対象とします。 対象になるS2コンテナ全体から、キーに対応する全てのコンポーネント定義を配列で返します。

パラメータ:
componentKey - コンポーネント定義を取得するためのキー
戻り値:
キーに対応するコンポーネント定義の配列を返します。 キーに対応するコンポーネント定義が存在しない場合は長さ0の配列を返します。
関連項目:
findComponentDefs(java.lang.Object), findLocalComponentDefs(java.lang.Object)

findLocalComponentDefs

public ComponentDef[] findLocalComponentDefs(java.lang.Object componentKey)
指定されたキーに対応する複数のコンポーネント定義を検索して返します。

検索の範囲は現在のS2コンテナのみです。 現在のS2コンテナから、キーに対応する全てのコンポーネント定義を配列で返します。

パラメータ:
componentKey - コンポーネント定義を取得するためのキー
戻り値:
キーに対応するコンポーネント定義の配列を返します。 キーに対応するコンポーネント定義が存在しない場合は長さ0の配列を返します。
関連項目:
findComponentDefs(java.lang.Object), findAllComponentDefs(java.lang.Object)

hasComponentDef

public boolean hasComponentDef(java.lang.Object componentKey)
指定されたキーに対応するコンポーネント定義が存在する場合trueを返します。

パラメータ:
componentKey - キー
戻り値:
キーに対応するコンポーネント定義が存在する場合true、そうでない場合はfalse

hasDescendant

public boolean hasDescendant(java.lang.String path)
pathを読み込んだS2コンテナが存在する場合trueを返します。

パラメータ:
path - パス
戻り値:
pathを読み込んだS2コンテナが存在する場合true、そうでない場合はfalse

getDescendant

public S2Container getDescendant(java.lang.String path)
                          throws ContainerNotRegisteredRuntimeException
pathを読み込んだS2コンテナを返します。

パラメータ:
path - パス
戻り値:
S2コンテナ
例外:
ContainerNotRegisteredRuntimeException - S2コンテナが見つからない場合

registerDescendant

public void registerDescendant(S2Container descendant)
descendantを子孫コンテナとして登録します。

子孫コンテナとは、このコンテナに属する子のコンテナや、その子であるコンテナです。

パラメータ:
descendant - 子孫コンテナ

include

public void include(S2Container child)
コンテナを子としてインクルードします。

パラメータ:
child - インクルードするS2コンテナ

getChildSize

public int getChildSize()
インクルードしている子コンテナの数を返します。

戻り値:
子コンテナの数

getChild

public S2Container getChild(int index)
番号で指定された位置の子コンテナを返します。

パラメータ:
index - 子コンテナの番号
戻り値:
子コンテナ

getParentSize

public int getParentSize()
このコンテナをインクルードしている親コンテナの数を返します。

戻り値:
親コンテナの数

getParent

public S2Container getParent(int index)
番号で指定された位置の親コンテナを返します。

パラメータ:
index - 親コンテナの番号
戻り値:
親コンテナ

addParent

public void addParent(S2Container parent)
親コンテナを追加します。

パラメータ:
parent - 親として追加するS2コンテナ

init

public void init()
コンテナの初期化を行います。 子コンテナを持つ場合、子コンテナを全て初期化した後、自分の初期化を行います。


destroy

public void destroy()
コンテナの終了処理をおこないます。 子コンテナを持つ場合、自分の終了処理を実行した後、子コンテナ全ての終了処理を行います。


getNamespace

public java.lang.String getNamespace()
名前空間を返します。

戻り値:
名前空間

setNamespace

public void setNamespace(java.lang.String namespace)
名前空間を設定します。

パラメータ:
namespace - 名前空間

isInitializeOnCreate

public boolean isInitializeOnCreate()
コンテナ作成時に初期化する場合trueを返します。

戻り値:
コンテナ作成時に初期化する場合true

setInitializeOnCreate

public void setInitializeOnCreate(boolean initializeOnCreate)
コンテナ作成時に初期化する場合trueを設定します。

パラメータ:
initializeOnCreate - コンテナ作成時に初期化する場合true

getPath

public java.lang.String getPath()
設定ファイルのpathを返します。

戻り値:
設定ファイルのpath

setPath

public void setPath(java.lang.String path)
設定ファイルのpathを設定します。

パラメータ:
path - 設定ファイルのpath

getRoot

public S2Container getRoot()
ルートのS2コンテナを返します。

戻り値:
ルートのS2コンテナ

setRoot

public void setRoot(S2Container root)
ルートのS2コンテナを設定します。

パラメータ:
root - S2コンテナ

getExternalContext

public ExternalContext getExternalContext()
外部コンテキストを返します。

戻り値:
外部コンテキスト

setExternalContext

public void setExternalContext(ExternalContext externalContext)
外部コンテキストを設定します。

外部コンテキストは、 application, requestsessionなど 各インスタンス定義を提供するものです。 これらのインスタンス定義を使用するには 外部コンテキストを設定する必要があります。

パラメータ:
externalContext - ExternalContext

getExternalContextComponentDefRegister

public ExternalContextComponentDefRegister getExternalContextComponentDefRegister()
外部コンテキストが提供する コンポーネントを登録するオブジェクトを返します。

戻り値:
外部コンテキストが提供するコンポーネントを登録するオブジェクト

setExternalContextComponentDefRegister

public void setExternalContextComponentDefRegister(ExternalContextComponentDefRegister externalContextComponentDefRegister)
外部コンテキストが提供する コンポーネントを登録するオブジェクトを設定します。

パラメータ:
externalContextComponentDefRegister - 外部コンテキストが提供するコンポーネントを登録するオブジェクト

getClassLoader

public java.lang.ClassLoader getClassLoader()
クラスローダーを返します。

戻り値:
クラスローダー

setClassLoader

public void setClassLoader(java.lang.ClassLoader classLoader)
クラスローダーを設定します。

パラメータ:
classLoader -

registerMap

public void registerMap(java.lang.Object key,
                        ComponentDef componentDef,
                        S2Container container)
子コンテナ(container)に登録された コンポーネント定義(componentDef)をこのコンテナから検索できるよう コンポーネント定義を管理するマップに登録します。

パラメータ:
key - キー
componentDef - コンポーネント定義
container - S2コンテナ


Copyright © 2004-2014 The Seasar Foundation. All Rights Reserved.