【问题标题】:Better way to update Spring Boot properties while app is running在应用程序运行时更新 Spring Boot 属性的更好方法
【发布时间】:2018-02-07 00:00:21
【问题描述】:

到目前为止,我已经看到了更新 Spring Boot 应用程序的方法,通过更改属性文件本身,然后重新加载文件,或者使用 @RefreshScope 注释,或者通过 Spring Cloud Config。

我无法直接找到任何内容(例如 getEnvironment().updateProperty(key, value) )。

有这样的方法吗?

例如,我需要更改我的应用程序的日志记录类型,以显示 SQL; 我的application.properties 文件包含这一行:spring.jpa.show-sql=false

但是如果我想在应用程序运行时通过 REST 调用将其设置为 true 怎么办?

您能建议一种更简单的方法吗?和/或展示您将如何为这个特定属性自己做的示例?

编辑:更改不需要反映在application.properties 文件中。因此,当应用程序重新启动时,它将使用最初在 application.properties 文件中设置的属性。

【问题讨论】:

  • 没有。属性在加载时应用...更改它们需要重新启动或重新创建 bean(因此 @RefreshScope)。您也许可以使用 JMX 更改正在运行的应用程序中的某些属性,但这不会反映在您的 application.properties 中。
  • 是的,谢谢,属性不需要反映在属性文件中。它们只需要应用于当前运行的实例。
  • 您可以使用 Spring-Boot Cloud。见stackoverflow.com/questions/26717187/…
  • @gtonic 如果可能的话,我想看看我的帖子中描述的属性的具体示例,以使事情尽可能简单。

标签: java spring rest spring-boot properties


【解决方案1】:

一些答案​​推荐 Spring Cloud Config Server。对某些人来说,这可能是矫枉过正。这个 SO 答案正是您正在寻找的。 How to hot reload properties in Spring Boot and Java EE

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-03-17
    • 1970-01-01
    • 2018-12-05
    • 1970-01-01
    • 1970-01-01
    • 2022-12-01
    • 2016-05-22
    相关资源
    最近更新 更多