在运行时更新Spring Boot应用程序配置

4

我已经通过在application.properties文件中设置以下值来实现了我的Spring Boot项目的关闭API:

 management.endpoint.shutdown.enabled=true
 management.endpoint.info.enabled=true
 management.endpoints.web.exposure.include=*

现在我想通过数据库动态禁用关机API,就像上面的配置一样,它们作为键值对存在,我可以随时更改。
在更改时,应用程序也应该使用新的配置值进行更新,从而禁用关机API。
1个回答

1
你可以使用 Netflix Archaius
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-archaius</artifactId>
</dependency>

在这里,你不需要使用@Value注解。

用法

DynamicStringProperty dynamicProperty = DynamicPropertyFactory.getInstance().getStringProperty("management.endpoint.shutdown.enabled", "default value here");
String propertyCurrentValue = dynamicProperty.get();

如果属性文件中的数据在任何时候发生更改,Archaius 将在运行时检测到并开始检索新值。
有用的参考资料:
- Archaius Girhub 信息:Archaius Girhub info - 各种数据库配置的 Archaius:Archaius with Various Database Configurations - 属性管理的 Archaius - 基础知识:Archaius for Property Management - Basics

我尝试了这种方法。然而,它没有起作用。这里是源代码:https://github.com/nazar-art/archaius-demo。当您启动应用程序时,可以访问http://localhost:8080/properties-from-dynamic。检查结果。现在更新`config.properties`中的某些属性。再次检查-没有区别。因此,在这种情况下,将其存储到数据库中是最合理的解决方案。 - catch23

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接