在 Spring Boot 中动态更改 application.properties 值

Pam*_*mba 5 java spring spring-boot

目前我正在 Spring Boot 中开发一个基于 REST 的项目。我已在“application.properties”文件中添加了 api url。

IE

应用程序属性

api-base-url=http://localhost:8080/RestServices/v1
Run Code Online (Sandbox Code Playgroud)

还有来自 java 的“api-base-url”值访问。

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

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

即这是我的默认值

api-base-url=http://localhost:8080/RestServices/v1
Run Code Online (Sandbox Code Playgroud)

动态改变为

api-base-url=http://10.34.2.3:8080/RestServices/v1
Run Code Online (Sandbox Code Playgroud)

当 Wildfly 重新启动时,配置将重置为默认值。IE

api-base-url=http://localhost:8080/RestServices/v1
Run Code Online (Sandbox Code Playgroud)

有什么解决办法吗?

Him*_*waj 1

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

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

您可以将 BeanFactoryPostProcessor 与环境 bean 结合使用来利用 spring 占位符概念。