2012-02-03 4 views
1

HelperFactoryというタイプが作成されました。シングルトン工場で新しいプロトタイプを入手

<bean id="HelperFactory" class="helper.HelperFactory"> 
    <property name="createHelper" ref="createHelperBean" /> 
    <property name="editHelper" ref="editHelperBean" /> 
    <property name="deleteHelper" ref="deleteHelperBean" /> 
</bean> 

参照されるすべてのBeanはプロトタイプです。

HelperFactoryにはというメソッドがあります。このメソッドは、適切なHelperの新しいインスタンスを返す必要があります。

しかし、HelperFactoryはシングルトンであるため、Helperという参照もすべて1回だけ設定されます。電話するたびに新しいHelperインスタンスを取得するにはどうすればいいですか - たとえば、getCreateHelper()


THER Helper豆はあまりにもXMLコンテキストで宣言され、他のいくつかの豆は、それらの中に注入しています。


現在、私はHelperFactoryにBeanの名前を注入することだし、それからgetBean(String)を呼んで、私はこれよりももっと良いものを探しています。春の文書から抽出

答えて

0

staticファクトリメソッドを含むクラスを指定するクラス属性と一緒に、静的なファクトリメソッドを使用して作成されるBeanを定義する場合、工場出荷時に法という名前の別の属性でありますファクトリメソッド自体の名前を指定する必要があります。 Springは、このメソッドを(後述の引数のオプションのリストを使って)呼び出すことができ、その時点からコンストラクタを介して正常に作成されたかのように扱われるライブオブジェクトを返すことを期待しています。このようなBean定義の1つの用途は、従来のコードで静的ファクトリを呼び出すことです。

以下は、ファクトリメソッドを呼び出してBeanを作成することを指定するBean定義の例です。この定義では、返されたオブジェクトの型(クラス)は指定されず、ファクトリメソッドを含むクラスのみが指定されていることに注意してください。この例では、createInstanceは静的メソッドでなければなりません。ここで

<bean id="exampleBean" 
     class="examples.ExampleBean2" 
     factory-method="createInstance"/> 
+0

3.3.4.1. Lookup method Injectionセクションをチェックアウト私のプロトタイプ豆は、XMLコンテキストで宣言され、いくつかの依存関係は、それらの中に注入しています。 –

1

たちは私のプロジェクトでそれを行っている方法です。

ファクトリクラスでは、などの方法を提供します。あなたの豆で

public Object createObject(){ 
     return null; 
} 

は、次の手順を実行します

<bean id="blah" class="blahblah"> 
    <lookup-method name="createObject" bean="myPrototypeBean"/> 
</bean> 

これにより、メソッドの呼び出し時にBeanを返すcreateObjectメソッドがオーバーライドされます。 BeanがプロトタイプBeanの場合、各インスタンスに対して新しいインスタンスが返されます。

Spring Beans

関連する問題