2012-02-28 4 views
4

のは、私は工場出荷時の豆を持っているとしましょう:Springのfactory-beanのファクトリメソッドにparamを追加するには?

<bean id="myFactory" class="com.company.MyFactory" lazy-init="true"> 
    <property name="myProperty" ref="propA"> 
</bean> 

がのががpropaは、ファクトリメソッドで使用されるIOCによって注入された豆であるとしましょう。そして私は、この工場から発生した2つの豆いる:どのように私はbean2が異なるファクトリメソッドを使用せずにbean1とは異なるmyPropertyにを使用する

<bean id="bean1" factory-bean="myFactory" factory-method="instance"/> 
<bean id="bean2" factory-bean="myFactory" factory-method="instance"/> 

を作ることができますか?あるいは、bean1またはbean2の設定からfactory-methodへのパラメータとしてpropAを渡すにはどうすればよいですか?

答えて

10

これは少し異なる方法で達成することができます:

class MyFactory { 
    public Bean instance(MyProperty myProperty) { 
     return //... 
    } 
} 

今、あなたは、次のような直感に反するの構文を使用することができます。

<bean id="bean1" factory-bean="myFactory" factory-method="instance"> 
    <constructor-arg ref="propA"/> 
</bean> 
<bean id="bean2" factory-bean="myFactory" factory-method="instance"> 
    <constructor-arg ref="propB"/> 
</bean> 

は信じられないかもしれませんが、propApropBinstance()として使用されますメソッドの引数

関連する問題