クラス PropertyPathFactoryBean
- 実装されたすべてのインターフェース:
Aware
、BeanFactoryAware
、BeanNameAware
、FactoryBean<ObjectSE>
FactoryBean
。ターゲットオブジェクトは、直接または Bean 名を介して指定できます。
使用例:
<!-- target bean to be referenced by name --> <bean id="tb" class="org.springframework.beans.TestBean" singleton="false"> <property name="age" value="10"/> <property name="spouse"> <bean class="org.springframework.beans.TestBean"> <property name="age" value="11"/> </bean> </property> </bean> <!-- will result in 12, which is the value of property 'age' of the inner bean --> <bean id="propertyPath1" class="org.springframework.beans.factory.config.PropertyPathFactoryBean"> <property name="targetObject"> <bean class="org.springframework.beans.TestBean"> <property name="age" value="12"/> </bean> </property> <property name="propertyPath" value="age"/> </bean> <!-- will result in 11, which is the value of property 'spouse.age' of bean 'tb' --> <bean id="propertyPath2" class="org.springframework.beans.factory.config.PropertyPathFactoryBean"> <property name="targetBeanName" value="tb"/> <property name="propertyPath" value="spouse.age"/> </bean> <!-- will result in 10, which is the value of property 'age' of bean 'tb' --> <bean id="tb.age" class="org.springframework.beans.factory.config.PropertyPathFactoryBean"/>
構成ファイルで Spring 2.0 および XML スキーマのサポートを使用している場合は、プロパティパスアクセスに次のスタイルの構成を使用することもできます。(その他の例については、Spring リファレンスマニュアルの「XML スキーマベースの構成」という付録を参照してください。)
<!-- will result in 10, which is the value of property 'age' of bean 'tb' --> <util:property-path id="name" path="testBean.age"/>提案と最初のプロトタイプを作成してくれた Matthias Ernst に感謝します。
- 導入:
- 1.1.2
- 作成者:
- Juergen Hoeller
- 関連事項:
フィールドサマリー
インターフェース org.springframework.beans.factory.FactoryBean から継承されたフィールド
OBJECT_TYPE_ATTRIBUTE
コンストラクターのサマリー
方法の概要
修飾子と型メソッド説明このファクトリによって管理されるオブジェクトのインスタンス(おそらく共有または独立)を返します。ClassSE<?>
この FactoryBean が作成するオブジェクトの型、または事前に不明な場合はnull
を返します。boolean
この FactoryBean はしばしばシングルトンターゲットに使用されますが、プロパティパスに対して呼び出された getter は各呼び出しに対して新しいオブジェクトを返す可能性があるため、各getObject()
呼び出しに対して同じオブジェクトを返さないと想定する必要があります。void
setBeanFactory
(BeanFactory beanFactory) 所有ファクトリを Bean インスタンスに提供するコールバック。void
setBeanName
(StringSE beanName) "targetObject" も "targetBeanName" も "propertyPath" も指定されていない場合、この PropertyPathFactoryBean の Bean 名は "beanName.property" パターンとして解釈されます。void
setPropertyPath
(StringSE propertyPath) ターゲットに適用するプロパティパスを指定します。void
setResultType
(ClassSE<?> resultType) プロパティパスを評価した結果の型を指定します。void
setTargetBeanName
(StringSE targetBeanName) プロパティパスを適用するターゲット Bean の名前を指定します。void
setTargetObject
(ObjectSE targetObject) プロパティパスを適用するターゲットオブジェクトを指定します。
コンストラクターの詳細
PropertyPathFactoryBean
public PropertyPathFactoryBean()
メソッドの詳細
setTargetObject
プロパティパスを適用するターゲットオブジェクトを指定します。または、ターゲット Bean 名を指定します。- パラメーター:
targetObject
- ターゲットオブジェクト、たとえば Bean 参照または内部 Bean- 関連事項:
setTargetBeanName
プロパティパスを適用するターゲット Bean の名前を指定します。または、ターゲットオブジェクトを直接指定します。- パラメーター:
targetBeanName
- 含まれている Bean ファクトリで検索される Bean 名 (たとえば、"testBean" )- 関連事項:
setPropertyPath
ターゲットに適用するプロパティパスを指定します。- パラメーター:
propertyPath
- 潜在的にネストされたプロパティパス (たとえば、「年齢」または "spouse.age" )
setResultType
プロパティパスを評価した結果の型を指定します。メモ: これは、直接指定されたターゲットオブジェクトまたはシングルトンターゲット Bean には必要ありません。型はイントロスペクションによって判別できます。型によるマッチングが必要な場合(たとえば、オートワイヤーの場合)、プロトタイプターゲットの場合はこれを指定します。
- パラメーター:
resultType
- 結果型、たとえば "java.lang.Integer"
setBeanName
"targetObject" も "targetBeanName" も "propertyPath" も指定されていない場合、この PropertyPathFactoryBean の Bean 名は "beanName.property" パターンとして解釈されます。これにより、ID/ 名前のみで簡潔な Bean 定義が可能になります。- 次で指定:
- インターフェース
BeanNameAware
のsetBeanName
- パラメーター:
beanName
- ファクトリ内の Bean の名前。この名前は、ファクトリで使用される実際の Bean 名であり、最初に指定した名前とは異なる場合があります。特に内部 Bean 名の場合、実際の Bean 名は "#..." サフィックスを追加することで一意になります。必要に応じて、BeanFactoryUtils.originalBeanName(String)
メソッドを使用して、元の Bean 名(サフィックスなし)を抽出します。
setBeanFactory
インターフェースからコピーされた説明:BeanFactoryAware
所有ファクトリを Bean インスタンスに提供するコールバック。通常の Bean プロパティの設定後、ただし
InitializingBean.afterPropertiesSet()
またはカスタム init-method などの初期化コールバックの前に呼び出されます。- 次で指定:
- インターフェース
BeanFactoryAware
のsetBeanFactory
- パラメーター:
beanFactory
- 所有 BeanFactory(非null
)。Bean は、ファクトリのメソッドをすぐに呼び出すことができます。- 関連事項:
getObject
インターフェースからコピーされた説明:FactoryBean
このファクトリによって管理されるオブジェクトのインスタンス(おそらく共有または独立)を返します。BeanFactory
と同様に、これにより、シングルトンとプロトタイプの両方の設計パターンをサポートできます。この FactoryBean が呼び出し時にまだ完全に初期化されていない場合(たとえば、循環参照に関係しているため)、対応する
FactoryBeanNotInitializedException
をスローします。FactoryBeans は
null
オブジェクトを返すことができます。Bean ファクトリはこれを通常の値と見なし、この場合はFactoryBeanNotInitializedException
をスローしません。ただし、FactoryBean 実装では、必要に応じてFactoryBeanNotInitializedException
自体をスローすることが推奨されます。- 次で指定:
- インターフェース
FactoryBean<ObjectSE>
のgetObject
- 戻り値:
- Bean のインスタンス (
null
にすることができます) - 例外:
BeansException
- 関連事項:
getObjectType
インターフェースからコピーされた説明:FactoryBean
この FactoryBean が作成するオブジェクトの型、または事前に不明な場合はnull
を返します。これにより、たとえばオートワイヤーなどで、オブジェクトをインスタンス化せずに特定の型の Bean を確認できます。
シングルトンオブジェクトを作成する実装の場合、このメソッドはシングルトンの作成を可能な限り回避し、事前に型を推定する必要があります。プロトタイプの場合は、ここで意味のある型を返すことも推奨されます。
このメソッドは、この FactoryBean が完全に初期化される前に呼び出すことができます。初期化中に作成された状態に依存しないでください。もちろん、利用可能な場合はそのような状態を引き続き使用できます。
注意 : オートワイヤーは、ここで
null
を返す FactoryBeans を単に無視します。FactoryBean の現在の状態を使用して、このメソッドを適切に実装することを強くお勧めします。- 次で指定:
- インターフェース
FactoryBean<ObjectSE>
のgetObjectType
- 戻り値:
- この FactoryBean が作成するオブジェクトの型、または呼び出し時に不明な場合は
null
- 関連事項:
isSingleton
public boolean isSingleton()この FactoryBean はしばしばシングルトンターゲットに使用されますが、プロパティパスに対して呼び出された getter は各呼び出しに対して新しいオブジェクトを返す可能性があるため、各getObject()
呼び出しに対して同じオブジェクトを返さないと想定する必要があります。- 次で指定:
- インターフェース
FactoryBean<ObjectSE>
のisSingleton
- 戻り値:
- 公開されたオブジェクトがシングルトンかどうか
- 関連事項: