假设我有一个工厂bean:
<bean id="myFactory" class="com.company.MyFactory" lazy-init="true">
<property name="myProperty" ref="propA">
</bean>
假设propA是由工厂方法中使用的IOC注入的bean。我从这家工厂生产了2个豆子:
<bean id="bean1" factory-bean="myFactory" factory-method="instance"/>
<bean id="bean2" factory-bean="myFactory" factory-method="instance"/>
如何在不使用其他工厂方法的情况下使bean2使用与bean1不同的myProperty?或者,如何将propA作为参数传递给bean1或bean2配置的工厂方法?
答案 0 :(得分: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>
信不信由你,propA
和propB
将用作instance()
方法参数。