【问题标题】:Can we change the value of a key in application.properties file in spring boot?我们可以在 Spring Boot 中更改 application.properties 文件中某个键的值吗?
【发布时间】:2018-02-10 10:10:01
【问题描述】:

假设我在属性文件中有一个值

my.flag=false

我将此文件放在 {.war 文件的位置}/config 文件夹中,以覆盖内部 application.properties 文件。 所以在我的控制器中,我只是打印这个键的值,它确实正确地显示为 false。

现在我的问题是,如果我将 application.properties 中的这个值更改为 true,我仍然在控制器中获得之前的值(启动服务器时的值)。

如果我必须更改 application.properties 文件中的值,是否每次都需要重新启动服务器?

【问题讨论】:

  • 如果您需要在运行时更改配置,您应该检查 spring 配置服务器:spring.io/guides/gs/centralized-configuration。当然,您可以通过轮询文件并在文件更改时重新加载配置来以简单的方式进行操作。取决于您的要求有多复杂。
  • @MarioSantini 为什么不在评论中给出答案?
  • @Kayaman 因为没有其他答案,所以我发布了我的。

标签: java spring-boot application.properties


【解决方案1】:

您无需重新启动应用程序。

最简单的方法是每次访问属性时检查属性文件。这样,您的应用程序将始终与保存在文件中的新值同步。

但效率不高,因为每次访问属性时都必须读取文件。

更好的方法应该是有一个配置类来处理您的应用程序的配置。

您应用中的所有类都将访问配置类以读取值。

配置类会每隔一段时间轮询文件以加载新值。

最简单的方法是将配置类设置为单例。

Spring 框架提供的另一个解决方案是Config Server

这适用于云,但如果您的应用和配置很复杂并且需要更多功能,您应该检查这种可能性。

【讨论】:

  • 你好马里奥。对于这一点 ==> 更好的方法应该是有一个配置类来处理您的应用程序的配置。你能提供一个例子或教程链接吗?
  • 抱歉,回答晚了,这取决于您的具体情况。如果您有一个简单的应用程序,那么您可以选择实现自己的配置类。要获得更好的解决方案,您应该查看 Spring Config Server。
  • 在我们的案例中,选择像 Spring Config 服务器这样的云选项(这是推荐的解决方案)会很困难,因为该解决方案是在本地部署的,不会暴露在开放的 Internet 上。相反,您能否提供一个如何实现自己的配置类(单例)的示例?
  • 嗨,对不起,我在这里提供一个简单的例子,但是这几天我很忙,一直没有时间写,对不起。
  • 由于您的问题与 Spring Boot 有关,我发现这个解决方案可能会有所帮助:stackoverflow.com/questions/40287771/…
猜你喜欢
  • 2019-02-05
  • 2019-04-13
  • 2019-01-19
  • 2020-01-14
  • 2021-12-17
  • 2015-04-20
  • 1970-01-01
  • 2019-08-05
  • 1970-01-01
相关资源
最近更新 更多