从属性文件自动刷新spring bean属性

时间:2009-02-27 15:02:59

标签: spring configuration properties javabeans

我正在使用Spring 2.5.6。我有一个bean,其属性是通过PropertyPlaceholderConfigurer从属性文件中分配的。我想知道在修改属性文件时是否可以更新bean的属性。例如,会有一些周期性过程检查属性文件的最后修改日期,如果已经更改,则重新加载bean。

我想知道是否已经满足了我的要求。如果没有,解决这个问题的最佳方法是什么?

感谢您的帮助。

5 个答案:

答案 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