我们有一个现有的Spring MVC应用程序(非Spring启动应用程序),其中包含在XML中配置的所有(或大多数)bean。我们希望将其用作Spring Cloud Config Client(我们有一个Spring Boot应用程序充当配置服务器)。
在这方面,XML的等价物是用XML配置带有刷新范围的bean(与@RefreshScope注释相同)。尝试将RefreshScope配置为bean并使用scope =" refresh"但是可以看到在执行/刷新终点(来自执行器)之后,bean没有反映新值
对此有任何帮助表示高度赞赏
答案 0 :(得分:0)
@RefreshScope只是另一个范围。看看RefreshScope类是如何实现的。它正在创建一个名为" refresh"的新范围。
这意味着您应该能够在XML配置中使用新范围,如下所示。
<bean id = "..." class = "..." scope = "refresh">
</bean>
答案 1 :(得分:0)
正如其他答案所指出的那样,刷新&#39;范围只是另一个范围。但是,如果在XML中定义和注入属性,那么在/ refresh调用之后不会使用新值更新bean属性的问题。有关此问题的更多信息here。然而,bean(即实际上是代理)在每次/刷新调用之后被实例化 - 但是你需要&#34; aop:scoped-proxy &#34;自从bean注入&#39;刷新&#39; scoped bean,可能在不同的范围内。即。
<bean name="xmlValueBean" class="me.fahimfarook.xml.XMLValueBean" scope="refresh">
<aop:scoped-proxy proxy-target-class="true" />
</bean>
答案 2 :(得分:0)
如果你想在核心Spring(也是Spring MVC)中使用@RefreshScope,就像人们已经指出的那样,你也必须自己实现范围。
我也遇到了同样的困境,我也写了一篇关于它的博客,你可以找到所有的实施细节。
如果您愿意,也可以将Spring Boot Configuration Server与Spring MVC应用程序一起使用。