我有一个名为让我们说 A 有这样一个二传手的类:
//class A
@Inject
public void setAProvider(Provider<B> b)
{
this.b = b;
}
当我只想拥有一种 A 实例时,它适用于 javax.inject 和注释配置。我的问题是我想要有两个 A 类实例,一个Provider<B1>
带有Provider<B2>
. 我的问题是如何在 Spring xml 配置中表达我的要求?
其实这里简单回答一下,你需要ProviderCreatingFactoryBean
。
这是一个例子:
<bean id="a" class="a.b.b.A" scope="prototype">
<property name="xxx" value="15000"/>
</bean>
<bean id="b" class="a.b.b.B" scope="prototype">
<property name="zzz" value="-1"/>
</bean>
<bean id="providerOfA" class="org.springframework.beans.factory.config.ProviderCreatingFactoryBean">
<property name="targetBeanName" value="a"/>
</bean>
<bean id="providerOfB" class="org.springframework.beans.factory.config.ProviderCreatingFactoryBean">
<property name="targetBeanName" value="b"/>
</bean>
<bean id="barServiceA" class="a.b.c.BarService">
<property name="provider" ref="providerOfA"/>
</bean>
<bean id="barServiceB" class="a.b.c.BarService">
<property name="provider" ref="providerOfB"/>
</bean>