/* * Copyright 2004-2006 the Seasar Foundation and the Others. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, * either express or implied. See the License for the specific language * governing permissions and limitations under the License. */ package org.seasar.framework.container; import java.util.Set; import org.seasar.framework.beans.BeanDesc; /** * アプリケーションの構成部品であるコンポーネントの定義を表すインターフェースです。 *
* コンポーネント定義は、 コンポーネントの管理に必要な以下の情報を保持します。 *
outerComponent
に対し、
* {@link ComponentDef コンポーネント定義}に基づいて、 S2コンテナ上のコンポーネントをインジェクションします。
*
* @param outerComponent
* 外部コンポーネント
*/
void injectDependency(Object outerComponent);
/**
* このコンポーネント定義を含むS2コンテナを返します。
*
* @return S2コンテナ
*/
S2Container getContainer();
/**
* このコンポーネント定義を含むS2コンテナを設定します。
*
* @param container
* S2コンテナ
*/
void setContainer(S2Container container);
/**
* 定義上のクラスを返します。 diconファイルの<component/>
タグにおける、
* class
属性で指定されたクラスを表します。 自動バインディングの際には、
* このクラス(インターフェース)が使用されます。
*
* @return 定義上のクラス
*/
Class getComponentClass();
/**
* コンポーネント名を返します。
*
* @return コンポーネント名
*/
String getComponentName();
/**
* コンポーネント名を設定します。
*
* @param componentName
* コンポーネント名
*/
void setComponentName(String componentName);
/**
* アスペクト適用後の、 実際にインスタンス化されるコンポーネントのクラスを返します。
*
* @return 実際のクラス
*/
Class getConcreteClass();
/**
* 自動バインディング定義を返します。
*
* @return 自動バインディング定義
*/
AutoBindingDef getAutoBindingDef();
/**
* 自動バインディング定義を設定します。
*
* @param autoBindingDef
* 自動バインディング定義
*/
void setAutoBindingDef(AutoBindingDef autoBindingDef);
/**
* インスタンス定義を返します。
*
* @return インスタンス定義
*/
InstanceDef getInstanceDef();
/**
* インスタンス定義を設定します。
*
* @param instanceDef
* インスタンス定義
*/
void setInstanceDef(InstanceDef instanceDef);
/**
* コンポーネントを生成する式を返します。
*
* @return コンポーネント生成式
*/
Expression getExpression();
/**
* コンポーネントを生成する式を設定します。
*
* @param Expression
* コンポーネント生成式
*/
void setExpression(Expression expression);
/**
* 外部バインディングが有効な場合true
を返します。
* * 外部バインディングとは、 外部コンテキストにあるコンポーネントのプロパティ値を、 * 指定したコンポーネントの対応するプロパティにバインディングする機能です。 *
** WEBアプリケーションにおいて、 {@link javax.servlet.http.HttpServletRequest リクエスト}コンテキストに入力された値を、 * {@link org.seasar.framework.container.deployer.InstanceRequestDef リクエストインスタンス}を通して}取得し、 * リクエスト間(ページ間)で透過的に引き継ぐ場合などに利用されます。 *
* * @return 外部バインディングの設定 * * @see org.seasar.framework.container.assembler.AbstractPropertyAssembler#bindExternally(BeanDesc, * ComponentDef, Object, Set) */ boolean isExternalBinding(); /** * 外部バインディングを有効にする場合true
を設定します。
*
* @param externalBinding
* 外部バインディングの設定
*/
void setExternalBinding(boolean externalBinding);
/**
* コンポーネントインスタンスを生成します。
*
* {@link InstanceDef コンポーネントインスタンス定義}がsingleton
の場合には、
* {@link AspectDef アスペクト}を適用したインスタンスの生成、 配備、 プロパティ設定の後に、
* {@link InitMethodDef initMethod}が呼ばれます。
*
* {@link InstanceDef コンポーネントインスタンス定義}がsingleton
の場合には、
* {@link DestroyMethodDef destroyMethod}が呼ばれます。
*