2012-10-03 50 views
4

我有一類叫做比方說,一個這樣的二傳手:如何使用Spring XML配置中javax.inject提供商<T>

//class A 
@Inject 
public void setAProvider(Provider<B> b) 
{ 
    this.b = b; 
} 

它正常工作與javax.inject和註釋配置時,我想有隻有一種A實例.. 我的問題是我想要有兩個A類實例,一個是Provider<B1>,另一個是Provider<B2>。我的問題是如何在Spring xml配置中表達我的需求?

回答

1

其實它簡單回答了here,你需要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> 
相關問題