/* * 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.lang.reflect.Field; import org.seasar.framework.beans.PropertyDesc; /** * コンポーネントをDIする時の動作を表すバインディングタイプを定義します。バインディングタイプには、「must」、「should」、「may」、「none」があります。 *
must | *自動バインディングが適用されない場合、例外が発生します。 | *
should(default) | *自動バインディングが適用されない場合、警告を通知します。 | *
may | *自動バインディングが適用されない場合、何もおきません。 | *
none | *autoBinding属性が、auto、propertyの場合でも、自動バインディングは適用されません。 | *
component
に対してコンテナ上のコンポーネントをプロパティ経由でDIします。
*
* @param componentDef
* コンポーネント定義
* @param propertyDef
* プロパティ定義
* @param propertyDesc
* コンポーネントのプロパティ情報
* @param component
* 対象となるコンポーネントのインスタンス
*/
void bind(ComponentDef componentDef, PropertyDef propertyDef,
PropertyDesc propertyDesc, Object component);
/**
* バインディングタイプに基づいて、component
に対してコンテナ上のコンポーネントをフィールドに直接DIします。
*
* @param componentDef
* コンポーネント定義
* @param propertyDef
* プロパティ定義
* @param field
* コンポーネントのフィールド情報
* @param component
* 対象となるコンポーネントのインスタンス
*/
void bind(ComponentDef componentDef, PropertyDef propertyDef, Field field,
Object component);
}