【问题标题】:How to update configuration of SpringBoot application at runtime without reloading whole ApplicationContext如何在运行时更新 Spring Boot 应用程序的配置而不重新加载整个 ApplicationContext
【发布时间】:2016-01-26 17:46:05
【问题描述】:

我试图弄清楚如何在 Spring Boot 应用程序中动态更新/重新加载外部化配置,而无需重新启动整个应用程序。

大多数建议涉及在更改外部配置后重新加载 ApplicationContext,但这相当于重新启动整个应用程序,所以这并不是那么有用。

翻阅SpringBoot参考文档,找到了23.7 Typesafe Configuration Properties一章。

如果我理解正确,这允许定义简单的 POJO 类,将您的应用程序(外部化)配置值作为属性。

至少在理论上,这种方案可以用于将 bean 绑定到所需的配置 POJO 一次,并且在配置更改时只需更新 POJO 中的值。组件可以在下次访问 POJO 上的 getter 时轻松获取更改...

但是,我还没有弄清楚如何启用这种行为。当相关配置发生变化时,是否有一些非常明显的方法可以动态更新带有@ConfigurationProperties 注释的组件?

【问题讨论】:

    标签: java spring configuration spring-boot


    【解决方案1】:

    听起来您正在寻找由 Spring Cloud 提供的@RefreshScope。来自Spring Cloud documentation

    标记为@RefreshScope 的Spring @Bean 将在配置发生更改时得到特殊处理。这解决了只有在初始化时才注入配置的有状态 bean 的问题。例如,如果DataSource 在通过Environment 更改数据库URL 时打开了连接,我们可能希望这些连接的持有者能够完成他们正在做的事情。然后下次有人从池中借用连接时,他会使用新 URL 获得一个。

    【讨论】:

    • 看起来很有希望...谢谢
    猜你喜欢
    • 2015-04-16
    • 2018-07-23
    • 1970-01-01
    • 2016-02-23
    • 2016-06-03
    • 2020-12-03
    • 2014-08-04
    • 1970-01-01
    相关资源
    最近更新 更多