在运行期间重新初始化spring bean?

时间:2016-08-30 03:51:27

标签: java spring

我有一个问题。“这只是我想在运行时管理的配置。我不想重新部署整个应用程序来更新配置”。我正在从属性文件中读取一些值。我怎么能实现这个?

2 个答案:

答案 0 :(得分:0)

有很多可能的解决方案,具体取决于确切的需求(这就像按需重新加载这些属性一样)。

最简单的似乎就是这个:

  • 创建一个内部定义了缓存的bean(如Guava缓存)
  • 为缓存内容设置一定的TTL(这将导致您的属性每TTL秒重新加载一次)
  • 提供填充缓存的方法
  • (可选)提供强制刷新缓存内容的方法

至于最后一点,我无法给你一个方法,因为我对你的项目一无所知,但根据你正在进行的项目,这里至少有一些不错的选择。

答案 1 :(得分:0)

假设您的文件不属于可部署(WAR / EAR / JAR),您可以查看目录更改并确定您的文件是否已更改(请参阅Can I watch for single file change with WatchService (not the whole directory)?)。一旦您注意到文件已更改,您就可以执行逻辑。