【发布时间】:2021-02-01 22:00:12
【问题描述】:
我将 application.properties 文件存储在我的配置服务器中。我的客户端应用程序正在引用配置服务器来下载属性文件。
场景 1:
当我在配置服务器中更改属性 server.port 的值时。我可以在不重新启动应用程序的情况下反映客户端应用程序中的更改吗?
【问题讨论】:
标签: spring-boot spring-cloud-config-server
我将 application.properties 文件存储在我的配置服务器中。我的客户端应用程序正在引用配置服务器来下载属性文件。
场景 1:
当我在配置服务器中更改属性 server.port 的值时。我可以在不重新启动应用程序的情况下反映客户端应用程序中的更改吗?
【问题讨论】:
标签: spring-boot spring-cloud-config-server
您可以为此目的使用@RefreshScope bean,这并不理想,但尽可能接近配置服务器,毕竟这是一个非常先进的东西。
所以标记了这个注解的beans会导致spring在EnvironmentChangeEvent上清除beans/配置类的内部缓存,然后在你下次尝试调用这个bean时创建这个bean的实例。
要在配置服务器更改时触发此类事件,您可以显式调用执行器的refresh enpoint 或开发您自己的可能基于某些消息传递系统的解决方案,以便配置服务器成为“更改”的生产者" 消息,消费者将成为您的应用程序。
现在我不能确定它是否特别适用于 server.port,我个人从未见过需要更改此属性,但对于您的自定义 bean,此方法可以完成工作。
Here 是一个很好的关于这个主题的教程
【讨论】: