在春季启动中动态更改application.properties值

时间:2018-07-28 01:18:59

标签: java spring spring-boot

当前,我正在Spring Boot中基于​​REST的项目上工作。 我已经在“ application.properties”文件中添加了api网址。

application.properties

api-base-url=http://localhost:8080/RestServices/v1

还有来自Java的'api-base-url'值访问。

在某些情况下,我需要动态更改“ api-base-url”。 我已经动态更改了'api-base-url'值并可以正常工作。

但是我的问题是 当wildfly重新启动时,配置将重置为默认值。

即 这是我的默认值

api-base-url=http://localhost:8080/RestServices/v1

动态更改为

api-base-url=http://10.34.2.3:8080/RestServices/v1

当wildfly重新启动时,配置将重置为默认值。 即

api-base-url=http://localhost:8080/RestServices/v1

对此有什么解决办法吗?

3 个答案:

答案 0 :(得分:1)

正如@moilejter建议的那样,一种可能的方法是将其保留在数据库表中,并且在开始时,您只需从该表中读取而不是从application.properties文件中读取即可。您的application.properties文件可以保存数据库连接所需的信息。

您还需要JMX方法或REST API,以在您的应用程序中触发url发生了更改,然后只需从同一表中读取即可。这样一来,即使应用重新启动,您也将很安全,并且不会丢失覆盖。

您可以将BeanFactoryPostProcessor与Environment Bean结合使用,以利用Spring占位符概念。

答案 1 :(得分:0)

您可能要考虑使用云配置服务器来托管您的配置。两个示例是Spring Cloud ConfigConsul

这些服务器将托管您的应用程序的配置,并且您的spring boot应用程序将在启动时调出配置服务器以获取其配置。

spring-boot-actuator公开端点/refresh,该端点强制应用程序刷新其配置。在这种情况下,它将调出配置服务器以获取最新版本。

这样,您可以更改配置服务器中托管的配置,然后点击/refresh端点,更改将由您的应用程序获取。

答案 2 :(得分:-2)

@ user2214646

使用春季表达语言