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

すべてのスーパーインタフェース:
ArgDefAware, AspectDefAware, DestroyMethodDefAware, InitMethodDefAware, InterTypeDefAware, MetaDefAware, PropertyDefAware
既知のサブインタフェースの一覧:
TooManyRegistrationComponentDef
既知の実装クラスの一覧:
ComponentDefImpl, SimpleComponentDef, TooManyRegistrationComponentDefImpl

public interface ComponentDef
extends ArgDefAware, InterTypeDefAware, PropertyDefAware, InitMethodDefAware, DestroyMethodDefAware, AspectDefAware, MetaDefAware

S2コンテナが管理するコンポーネントの定義を表すインターフェースです。

コンポーネント定義は、 コンポーネントの管理に必要な以下の情報を保持します。

ライフサイクル
コンポーネントのスコープや、生成と消滅については、 このコンポーネントのインスタンス定義で設定します。 生成については、 コンポーネント生成式により指定することも可能です。
依存性注入(Dependency Injection)
このコンポーネントが依存する他のコンポーネントやパラメータは、 引数定義初期化メソッド定義プロパティ定義などにより設定します。
アスペクト
このコンポーネントのアスペクト定義により設定します。
メタデータ
メタデータ定義により、 コンポーネントに付加情報を設定できます。 メタデータは、 特殊なコンポーネントであることを識別する場合などに利用します。

作成者:
higa, belltree
関連項目:
ArgDef, InterTypeDef, PropertyDef, InitMethodDef, DestroyMethodDef, AspectDef, MetaDef

メソッドの概要
 void destroy()
          コンポーネント定義を破棄します。
 AutoBindingDef getAutoBindingDef()
          自動バインディング定義を返します。
 Object getComponent()
          定義に基づいてコンポーネントを返します。
 Class getComponentClass()
          定義上のクラスを返します。
 String getComponentName()
          コンポーネント名を返します。
 Class getConcreteClass()
          アスペクト適用後の、 実際にインスタンス化されるコンポーネントのクラスを返します。
 S2Container getContainer()
          このコンポーネント定義を含むS2コンテナを返します。
 Expression getExpression()
          コンポーネントを生成する式を返します。
 InstanceDef getInstanceDef()
          インスタンス定義を返します。
 void init()
          コンポーネント定義を初期化します。
 void injectDependency(Object outerComponent)
          外部コンポーネントouterComponentに対し、 コンポーネント定義に基づいて、 S2コンテナ上のコンポーネントをインジェクションします。
 boolean isExternalBinding()
          外部バインディングが有効な場合trueを返します。
 void setAutoBindingDef(AutoBindingDef autoBindingDef)
          自動バインディング定義を設定します。
 void setComponentName(String componentName)
          コンポーネント名を設定します。
 void setContainer(S2Container container)
          このコンポーネント定義を含むS2コンテナを設定します。
 void setExpression(Expression expression)
          コンポーネントを生成する式を設定します。
 void setExternalBinding(boolean externalBinding)
          外部バインディングを有効にする場合trueを設定します。
 void setInstanceDef(InstanceDef instanceDef)
          インスタンス定義を設定します。
 
インタフェース org.seasar.framework.container.ArgDefAware から継承したメソッド
addArgDef, getArgDef, getArgDefSize
 
インタフェース org.seasar.framework.container.InterTypeDefAware から継承したメソッド
addInterTypeDef, getInterTypeDef, getInterTypeDefSize
 
インタフェース org.seasar.framework.container.PropertyDefAware から継承したメソッド
addPropertyDef, getPropertyDef, getPropertyDef, getPropertyDefSize, hasPropertyDef
 
インタフェース org.seasar.framework.container.InitMethodDefAware から継承したメソッド
addInitMethodDef, getInitMethodDef, getInitMethodDefSize
 
インタフェース org.seasar.framework.container.DestroyMethodDefAware から継承したメソッド
addDestroyMethodDef, getDestroyMethodDef, getDestroyMethodDefSize
 
インタフェース org.seasar.framework.container.AspectDefAware から継承したメソッド
addAspectDef, addAspectDef, getAspectDef, getAspectDefSize
 
インタフェース org.seasar.framework.container.MetaDefAware から継承したメソッド
addMetaDef, getMetaDef, getMetaDef, getMetaDefs, getMetaDefSize
 

メソッドの詳細

getComponent

public Object getComponent()
                    throws TooManyRegistrationRuntimeException,
                           CyclicReferenceRuntimeException
定義に基づいてコンポーネントを返します。

戻り値:
コンポーネント
例外:
TooManyRegistrationRuntimeException - コンポーネント定義が重複している場合
CyclicReferenceRuntimeException - コンポーネント間に循環参照がある場合
関連項目:
TooManyRegistrationComponentDef

injectDependency

public void injectDependency(Object outerComponent)
外部コンポーネントouterComponentに対し、 コンポーネント定義に基づいて、 S2コンテナ上のコンポーネントをインジェクションします。

パラメータ:
outerComponent - 外部コンポーネント

getContainer

public S2Container getContainer()
このコンポーネント定義を含むS2コンテナを返します。

戻り値:
S2コンテナ

setContainer

public void setContainer(S2Container container)
このコンポーネント定義を含むS2コンテナを設定します。

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

getComponentClass

public Class getComponentClass()
定義上のクラスを返します。

diconファイルの<component>タグにおける、 class属性で指定されたクラスを表します。 自動バインディングされる際には、 このクラス(インターフェース)が使用されます。

戻り値:
定義上のクラス

getComponentName

public String getComponentName()
コンポーネント名を返します。

戻り値:
コンポーネント名

setComponentName

public void setComponentName(String componentName)
コンポーネント名を設定します。

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

getConcreteClass

public Class getConcreteClass()
アスペクト適用後の、 実際にインスタンス化されるコンポーネントのクラスを返します。

戻り値:
実際のクラス

getAutoBindingDef

public AutoBindingDef getAutoBindingDef()
自動バインディング定義を返します。

戻り値:
自動バインディング定義

setAutoBindingDef

public void setAutoBindingDef(AutoBindingDef autoBindingDef)
自動バインディング定義を設定します。

パラメータ:
autoBindingDef - 自動バインディング定義

getInstanceDef

public InstanceDef getInstanceDef()
インスタンス定義を返します。

戻り値:
インスタンス定義

setInstanceDef

public void setInstanceDef(InstanceDef instanceDef)
インスタンス定義を設定します。

パラメータ:
instanceDef - インスタンス定義

getExpression

public Expression getExpression()
コンポーネントを生成する式を返します。

戻り値:
コンポーネント生成式

setExpression

public void setExpression(Expression expression)
コンポーネントを生成する式を設定します。

パラメータ:
expression - コンポーネント生成式

isExternalBinding

public boolean isExternalBinding()
外部バインディングが有効な場合trueを返します。

外部バインディングとは、 外部コンテキストにあるオブジェクトを、 指定したコンポーネントの対応するプロパティにバインディングする機能です。

Webアプリケーションにおいて、 リクエストコンテキストに入力された値を、 リクエストインスタンスを通して取得し、 リクエスト間(ページ間)で透過的に引き継ぐ場合などに利用されます。

戻り値:
外部バインディングが有効な場合true
関連項目:
AbstractPropertyAssembler.bindExternally(BeanDesc, ComponentDef, Object, Set)

setExternalBinding

public void setExternalBinding(boolean externalBinding)
外部バインディングを有効にする場合trueを設定します。

パラメータ:
externalBinding - 外部バインディングを有効にする場合true

init

public void init()
コンポーネント定義を初期化します。

コンポーネントインスタンス定義singletonの場合には、 アスペクトを適用したインスタンスの生成、 配備、 プロパティ設定の後に、 initMethodが呼ばれます。

関連項目:
SingletonComponentDeployer.init()

destroy

public void destroy()
コンポーネント定義を破棄します。

コンポーネントインスタンス定義singletonの場合には、 destroyMethodが呼ばれます。

関連項目:
SingletonComponentDeployer.destroy()


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