应用运行时更新Spring Boot属性的更好方法

Wil*_*ban 5 java rest spring properties spring-boot

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

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

有这种方法吗?

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

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

您能建议一种更简单的方法吗?和/或显示有关此特定属性的示例,您将自己如何做?

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

小智 1

您可以使用kubernetes env,如下所示:

spec:
  containers:
  - name: envar-demo-container
    image: gcr.io/google-samples/node-hello:1.0
    env:
    - name: SPRING_PROFILES_ACTIVE
      value: "prod"
Run Code Online (Sandbox Code Playgroud)

如果不使用 kubernetes,您可以使用数据库(我更喜欢使用 NoSql 作为此解决方案)来更改属性。编写schedule用于从数据库获取数据并更新属性