Sto tentando di implementare un fornitore di servizi delegato sovrascrivendo la definizione del bean per il servizio originale con il mio servizio delegato. Tuttavia, come implicherebbe il nome, il servizio delegato necessita di un riferimento al servizio originale per delegare le chiamate a.Come sovrascrivere una definizione di bean Spring e fare ancora riferimento al bean sottoposto a override?
Non riesco a capire come sovrascrivere la definizione del bean mentre si utilizza il bean def originale senza eseguire un riferimento circolare.
Ad esempio:
<!-- Original service def in spring-context.xml -->
<bean id="service" class="com.mycompany.Service"/>
<!-- Overridden definition in spring-plugin-context.xml -->
<bean id="service" class="com.mycompany.DelegatedService"/>
<constructor-arg ref="service"/>
</bean>
è possibile?
Questa risposta è stata la più utile anche se il mio problema si è rivelato irrisolvibile. Al fine di delegare la classe, deve essere tessuta da un aspetto. Poiché la classe che stavo tentando di eseguire il proxy era già stata compilata ed eseguita in un classloader diverso, non ero in grado di eseguire il proxy. – Kevin
@Kevin: un 'AutoProxyCreator' non esegue il proxy delle classi, genera proxy di bean. Non dovrebbe importare quale classloader carichi la classe target, è l'oggetto target che è proxy e Spring istanzia quell'oggetto target. – skaffman
per rispondere alla domanda originale, uno schema è semplicemente dichiarare un bean sottostante "nudo". in una configurazione l'alias al nome del bean di destinazione, nell'altra configurazione definire il proprio wrapper che viene iniettato con il bean sottostante. questo richiede in anticipo una pianificazione. – aaron