Je tente d'implémenter un fournisseur de service de délégué en remplaçant la définition de bean pour le service d'origine avec mon service de délégué. Toutefois, comme son nom l'indique, le service délégué a besoin d'une référence au service d'origine auquel déléguer les appels.Comment remplacer une définition de bean Spring tout en référençant le bean surchargé?
Je n'arrive pas à déterminer comment remplacer la définition du bean tout en utilisant le bean def d'origine sans rencontrer de problème de référence circulaire.
Par exemple:
<!-- 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>
Est-ce possible?
Cette réponse a été la plus utile bien que mon problème soit devenu insoluble. Afin de représenter la classe, elle doit être tissée par un aspect. Étant donné que la classe que je tentais d'utiliser comme proxy était déjà compilée et exécutée dans un classloader différent, je n'ai pas été capable de l'utiliser par procuration. – Kevin
@ Kevin: Un 'AutoProxyCreator' ne classe pas proxy, il proxie haricots. Peu importe le classloader qui charge la classe cible, c'est l'objet cible qui est mandaté et Spring instancie cet objet cible. – skaffman
pour répondre à la question initiale, un modèle est de simplement déclarer un « nu » haricot sous-jacent. dans une configuration alias le nom du bean cible, dans l'autre configuration, définissez votre wrapper qui est injecté avec le bean sous-jacent. cela nécessite une planification préalable cependant. – aaron