5

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

我想知道是否已经有一些东西可以满足我的要求。如果不是,解决这个问题的最佳方法是什么?

谢谢你的帮助。

4

5 回答 5

3

可能还会考虑使用 Spring 的 PropertyOverrideConfigurer。可以重新读取属性并将其重新应用到一些轮询/调度 bean 中。

它确实取决于实际配置的 bean 如何使用这些属性。例如,他们可能会间接地将它们缓存在自己的某个地方。

于 2009-02-27T15:24:36.407 回答
2

如果您想要在运行时动态属性,也许另一种方法是 JMX。

于 2009-02-27T15:14:41.517 回答
0

一种方法是在您的应用程序中嵌入一个 groovy 控制台。这里有一些说明。顺便说一句,它们做起来很简单——尽管我对 groovy 不太熟悉,但我只花了很少的时间。

完成此操作后,您可以简单地进入控制台并动态更改实时应用程序中的值。

于 2009-02-27T15:09:24.960 回答
0

您可能会尝试为 bean 使用自定义范围,以便在更改属性文件时重新创建 bean。在这里查看我更广泛的答案

于 2012-04-23T14:24:30.770 回答
0

春天云配置具有通过 Spring Cloud Bus 和使用 Cloud Config Server 在运行时更改配置属性的功能。配置或 .properties 或 .yml 文件是从 Spring 应用程序“外部化”的,而是从应用程序在启动时连接到的 Spring Cloud Config Server 检索。该云配置服务器从 GIT 存储库中检索适当的配置 .properties 或 .yml 文件(还有其他存储解决方案,但 GIT 是最常见的)。然后,您可以在运行时通过更改 GIT 存储库的配置文件的内容来更改配置——Cloud Config Server 通过 Spring Cloud Bus 将更改广播到任何客户端 Spring 应用程序,并且这些应用程序的配置会更新,而无需重新启动应用程序。你可以在这里找到一个简单的例子:https://github.com/ldojo/spring-cloud-config-examples

于 2016-03-08T02:57:18.980 回答