编程语言
首页 > 编程语言> > java – 如何在使用spring boot时配置动态属性?

java – 如何在使用spring boot时配置动态属性?

作者:互联网

我打算将Spring Boot用于我的任务.它是一个连接数据库的典型服务器应用程序.我知道我可以使用Spring Configuration外部化我的属性,例如数据库连接细节.但我还有其他需要在运行时更新的动态属性.例如脚蹼/功能标志.我的应用程序的某些功能需要动态控制,例如设想像app.cool-feature.enable = true这样的属性,然后在一段时间之后app.cool-feature.enable = false会关闭相同的功能

有什么建议在运行时采集这种动态行为的最佳做法是什么?我可以想到以下选项来触发变更……

>使用上述属性更改将JMS消息发送到服务器实例
>在服务器实例上调用公开的API端点,例如POST http://myapp/admin/config/update {
“config”:{
“app.cool-feature.enable”:是的
}
}

我知道我可以编写自己的自定义代码来实现这个(这将是第三次),但只是想知道是否已经存在我不知道的动态属性配置的标准方法/常规实践.如果它可以与Apache ZooKeeper,coreos etcd,Netflix策展人等其他解决方案一起使用并且与Spring紧密集成,那将会很棒.

思考?

解决方法:

如果您使用的是Spring引导,请查看@ConfigurationProperties.您将需要提供Bean才能访问您的房产.
因此,属性的原始值可以在执行期间更改,因为它们是bean的常规属性.

以你的情况为例:

@Component
@ConfigurationProperties
public class JmsProperties {

    private String url = "vm://localhost" (let's suppose you use ActiveMQ);

    public String getUrl()...
    public void setUrl(String value)...

}

然后在您的JMS消息侦听器中注入此bean.

当然如果你使用JMS和Spring启动,使用自动配置你已经有了属性类……

标签:java,spring,spring-boot,apache-zookeeper,etcd
来源: https://codeday.me/bug/20191005/1857276.html