在应用程序运行时更新 Spring Boot 属性的更好方法
Posted
技术标签:
【中文标题】在应用程序运行时更新 Spring Boot 属性的更好方法【英文标题】:Better way to update Spring Boot properties while app is running 【发布时间】: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。见***.com/questions/26717187/…
refreshing spring boot properties的可能重复
@gtonic 如果可能的话,我想看看我的帖子中描述的属性的具体示例,以使事情尽可能简单。
【参考方案1】:
一些答案推荐 Spring Cloud Config Server。对某些人来说,这可能是矫枉过正。这个 SO 答案正是您正在寻找的。 How to hot reload properties in Spring Boot and Java EE
【讨论】:
以上是关于在应用程序运行时更新 Spring Boot 属性的更好方法的主要内容,如果未能解决你的问题,请参考以下文章