我正在使用Spring 2.5.6。我有一个bean,其属性是通过PropertyPlaceholderConfigurer从属性文件中分配的。我想知道在修改属性文件时是否可以更新bean的属性。例如,会有一些周期性过程检查属性文件的最后修改日期,如果已经更改,则重新加载bean。
我想知道是否已经满足了我的要求。如果没有,解决这个问题的最佳方法是什么?
感谢您的帮助。
答案 0 :(得分:3)
也可以考虑使用Spring的PropertyOverrideConfigurer。可以重新读取属性并在某些轮询/调度bean中重新应用它。
它取决于实际配置的bean如何使用这些属性。例如,他们可能会间接地将它们缓存在自己的某个地方。
答案 1 :(得分:2)
如果你想在运行时使用动态属性,可能另一种方法是使用JMX。
答案 2 :(得分:0)
执行此操作的一种方法是在应用程序中嵌入groovy控制台。 Here's一些指示。它们很简单,顺便说一下 - 即使我对groovy并不熟悉,也花了我很少的时间。
一旦你这样做,你可以直接进入控制台并动态更改实时应用程序中的值。
答案 3 :(得分:0)
您可能会尝试使用自定义作用域来重新创建属性文件更改的bean。查看我的more extensive answer here。
答案 4 :(得分:0)
Spring Cloud Config具有通过Spring Cloud Bus和使用Cloud Config Server在运行时更改配置属性的功能。配置或.properties或.yml文件从Spring应用程序“外部化”,而是从应用程序在启动时连接的Spring Cloud Config Server中检索。 Cloud Config Server从GIT仓库中检索适当的配置.properties或.yml文件(还有其他存储解决方案,但GIT是最常见的)。然后,您可以通过更改GIT仓库配置文件的内容在运行时更改配置 - Cloud Config Server通过Spring Cloud Bus将更改广播到任何Client Spring应用程序,并且这些应用程序的配置更新后无需重新启动应用程序。您可以在此处找到一个有用的简单示例:https://github.com/ldojo/spring-cloud-config-examples