/* * 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自動バインディングが適用されない場合、何もおきません。
noneautoBinding属性が、auto、propertyの場合でも、自動バインディングは適用されません。
* * @author higa * @author jundu (Javadoc) */ public interface BindingTypeDef { /** * バインディングタイプ「must」を表す定数です。 */ String MUST_NAME = "must"; /** * バインディングタイプ「should」を表す定数です。 */ String SHOULD_NAME = "should"; /** * バインディングタイプ「may」を表す定数です。 */ String MAY_NAME = "may"; /** * バインディングタイプ「none」を表す定数です。 */ String NONE_NAME = "none"; /** * バインディングタイプを返します。 * * @return バインディングタイプを表す文字列 */ String getName(); /** * バインディングタイプに基づいて、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); }