2015-06-25 12 views
5
classe

genitore è come questo:come iniettare proprietà classe genitore con annotazione primavera

public class BaseDAO{ 
    private DBRoute defaultDB; 

    public DBRoute getDefaultDB() 
    { 
     return this.defaultDB; 
    } 

    public void setDefaultDB(DBRoute defaultDB) 
    { 
     this.defaultDB = defaultDB; 
    } 
} 

devo creare i fagioli come di seguito:

<bean id="adsConfigDB" class="net.flyingfat.common.dbroute.config.DBRoute"> 
    <constructor-arg value="adsConfig" /> 
</bean> 

<bean id="adsBizDateDB" class="net.flyingfat.common.dbroute.config.DBRoute"> 
    <constructor-arg value="adsBizDate" /> 
</bean> 

voglio iniettare proprietà superclasse Defaultdb in sottoclasse attraverso byName, non byType, che è in sottoclasse inietta defaultDB utilizzando adsConfigDB o adsBizDateD B. C'è un modo per farlo con le annotazioni di primavera? Ho già provato Autowired o Resource con il costruttore che non funziona. A proposito, so già che questo può essere fatto usando XML.

risposta

1

annotazione @Qualifier - Questa annotazione viene utilizzata per evitare conflitti nella mappatura dei bean e è necessario fornire il nome del bean che verrà utilizzato per la creazione automatica. In questo modo possiamo evitare problemi in cui sono definiti più bean per lo stesso tipo. Questa annotazione di solito funziona con l'annotazione @Autowired. Per costruttori con più argomenti, possiamo usare questa annotazione con i nomi degli argomenti nel metodo.

Il codice sarà così ..

@Autowired 
@Qualifier("adsConfig") 
private DBRoute defaultDB; 
+0

Non credo che si capisce la domanda. Voglio iniettarlo in sottoclasse, non in superclasse che definisce la proprietà. Il fatto è che non posso modificare la superclasse – TonyArcher

Problemi correlati