/* * 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; /** * アプリケーションの構成部品であるコンポーネントの定義を表すインターフェースです。 *
* コンポーネント定義は、 コンポーネントの管理に必要な以下の情報を保持します。 *
outerComponent
に、 依存コンポーネントをインジェクションします。
*
* @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);
/**
* 外部バインディングの真偽を返します。
*
* @return 外部バインディングの真偽
*/
boolean isExternalBinding();
/**
* 外部バインディングの真偽を設定します。
*
* @param externalBinding
* 外部バインディングの真偽
*/
void setExternalBinding(boolean externalBinding);
/**
* {@link InstanceDef インスタンス定義}がsingleton
の場合、
* コンポーネント定義に基づいて、 シングルトンのインスタンスを生成します。
*/
void init();
/**
* {@link InstanceDef インスタンス定義}がsingleton
の場合、
* コンポーネント定義に基づいて生成された、 シングルトンのインスタンスを破棄します。
*/
void destroy();
}