如何使用javax.injectprovider<;T>;在SpringXML配置中

如何使用javax.injectprovider<;T>;在SpringXML配置中,java,spring,provider,inject,Java,Spring,Provider,Inject,我有一个叫做a的类,有这样一个setter: //class A @Inject public void setAProvider(Provider<B> b) { this.b = b; } //A类 @注入 公共无效设置提供程序(提供程序b) { 这个.b=b; } 当我只想拥有一种实例时,它可以与javax.inject和注释配置配合使用。。 我的问题是我想要两个类A的实例,一个是Provider,另一个是Provider。我的问题是如何在SpringXML配置中表

我有一个叫做a的类,有这样一个setter:

//class A
@Inject
public void setAProvider(Provider<B> b)
{
    this.b = b;
}
//A类
@注入
公共无效设置提供程序(提供程序b)
{
这个.b=b;
}
当我只想拥有一种实例时,它可以与javax.inject和注释配置配合使用。。
我的问题是我想要两个类A的实例,一个是
Provider
,另一个是
Provider
。我的问题是如何在SpringXML配置中表达我的需求?

事实上,答案很简单,您需要
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>