2016-12-07 4 views
2

Nous avons une application Spring MVC existante (application autre que Spring-boot) avec tous (ou la plupart) des beans configurés dans le XML. Nous voulions l'utiliser comme un client Spring Cloud Config (nous avons une application Spring Boot agissant comme serveur de configuration). À cet égard, quel est l'équivalent XML de la configuration des beans en XML avec une étendue d'actualisation (identique à l'annotation @RefreshScope). J'ai essayé de configurer le RefreshScope comme le haricot et l'utilisation scope = « rafraîchir », mais pourrait voir que les haricots ne sont pas reflétées avec de nouvelles valeurs après peforming/point final de rafraîchissement (de l'actionneur)Spring Config Client Équivalent XML de @RefreshScope

Toute aide à ce sujet est très apprécié

+0

le problème de base est que ce qui est la meilleure façon de créer un haricot « actualisables » en XML (équivalent d'annotation @RefreshScope). –

Répondre

0

@ RefreshScope est juste une autre portée. Regardez comment la classe RefreshScope est implémentée. Il crée une nouvelle portée nommée "refresh". Cela signifie que vous devriez pouvoir utiliser la nouvelle portée dans votre configuration XML, comme ceci.

<bean id = "..." class = "..." scope = "refresh"> 
</bean> 
0

Comme souligné dans d'autres réponses, la portée de l'actualisation est juste une autre portée. Cependant, il y a un problème où les propriétés du bean ne sont pas mises à jour avec de nouvelles valeurs après l'appel/refresh - si vous définissez et injectez des propriétés dans XML. Plus sur la question here. Cependant, le bean (c'est-à-dire le proxy) est instancié après chaque appel/refresh - mais vous avez besoin de "aop: scoped-proxy" puisque le bean auquel vous injectez le bean scope 'refresh' pourrait être dans une autre portée. à savoir

<bean name="xmlValueBean" class="me.fahimfarook.xml.XMLValueBean" scope="refresh"> 
    <aop:scoped-proxy proxy-target-class="true" /> 
</bean> 
0

Eh bien, si vous voulez utiliser @RefreshScope au printemps de base que les gens déjà souligné (également Spring MVC), vous devez mettre en œuvre la portée vous aussi. J'ai aussi eu le même dilemme et je l'ai fait, j'ai aussi écrit un blog à ce sujet, vous pouvez y trouver tous les détails d'implémentation.

Vous pouvez également utiliser Spring Boot Configuration Server avec votre application Spring MVC, si vous le souhaitez.

@RefreshScope for Spring MVC