2010-12-17 6 views
0

そのIDに静的なファクトリメソッドを呼び出した後、静的ファクトリメソッドから工場を作成します。私はそうのような静的なファクトリオブジェクトからオブジェクトを作成することができます

<bean id="myFactory" class="com.myco.MyFactory1" factory-method="createFactory"> 
    <constructor-arg value="aString" /> 
</bean> 

は今、私はIDを使用したい「myFactory」と呼ぶためにその 静的 'createFactory'メソッド。不正なJavaコードで

ObjectFactory objectFactory = MyFactory.createFactory().createFactory(); //Last createFactory method returns type ObjectFactory 
+3

わかりません。 MyFactory.createFactory()。createFactory() 'のようなものが必要ですか? – Bozho

+0

はい、MyFactory.createFactory()。createFactory()。これを反映するように質問を更新します。 – Quaternion

+1

あなたが達成しようとしていることを明確にする必要があるかもしれません。 createFactoryがファクトリを作成する場合、なぜ別のファクトリを作成したいのですか?あなたはすでにそれを持っていないのですか? – Jay

答えて

2

Beanインスタンスのファクトリメソッドを呼び出すことはできますが、この場合、ファクトリメソッドは静的であってはいけません。

<bean id="myFactory2" factory-bean="myFactory" factory-method="createFactory"> 

</bean> 

とにかく、私はそれに同意します。要件を詳細に指定する必要があります。最初のcom.myco.MyFactory1がcom.myco.MyFactory1のインスタンスを返す場合、createInstanceメソッドを呼び出すことはあまり意味がありません。同じクラスが返されると、同じ静的メソッドが呼び出されます。

最初のファクトリcom.myco.MyFactory1が異なるクラスのインスタンスを返す場合は、上のコードを使用してこれらのファクトリメソッドを呼び出すことができます。しかし、この場合は静的でなければならないことを覚えておいてください。

UPDATE:

それは次のように別のBeanインスタンスの静的メソッドを呼び出すことによって、新しいインスタンスを作成することが可能です。

<bean id="myFactory2" class="org.springframework.beans.factory.config.MethodInvokingFactoryBean"> 
    <property name="targetObject"><ref local="myFactory"/></property> 
    <property name="targetMethod"><value>createFactory</value></property> 
</bean> 

しかし、あなたはおそらくデザインを考え直すべきです。

+0

+1です。私は 'factory-bean'について忘れていました:) – Bozho

+0

私は工場の豆を試しましたが、明らかにそれは正しくありません。 – Quaternion

+0

これは私にとって残念なことに質問が間違っていたという質問に答えました。今は静的ファクトリメソッドからCreateファクトリを呼び出し、次にそのファクトリメソッドをそのIDのファクトリメソッドに呼び出す必要があります。あなたが提供したことに続いて、私はまだエラーがあります。 – Quaternion

2

:のようなJavaの何かで

MyFactoryには同じ名前の2つのメソッドがあります(1つはstatic、もう1つは非静的です)。そして、これは不可能です。あなたは二度同じ静的メソッドを呼び出す、または別のオブジェクトのメソッドを呼び出している場合は

- だけでなく、あなたが簡単に、一度だけ/ 2の呼び出しをマージし、それを呼び出すことができ、さらにcreateObjectFactory()

言って、それファクトリを作成して、別のファクトリを作成するファクトリを作成するのは本当に奇妙なようです。悪いデザイン(オーバーデザイン)のように聞こえます。

+0

MyFactoryは、本当に必要なオブジェクトを作成する静的メソッドを持つFooFactoryをインスタンス化できませんでしたか? – Quaternion

+0

はい、私はそれに関する更新を含んでいました。 3つの工場を持っているのは間違っている – Bozho

関連する問題