我有一个spring-boot项目,我设法配置外部配置,它可以在外部servlet容器和嵌入式servlet容器下工作(你可以在这里看到详细信息:External configuration for spring-boot application) 现在我想在运行时重新加载此配置。 有什么想法吗?
答案 0 :(得分:4)
看一下spring-cloud-config项目(http://cloud.spring.io/spring-cloud-config),它允许重新加载配置(重点是从中央服务器加载,不确定它是否也包含本地文件)。可以使用@RefreshScope注释Bean,以便在更改配置时重新初始化。
答案 1 :(得分:1)
我认为这是不可能的;至少不容易。 如果您更改配置并希望这些更改反映在您的spring上下文中,那么依赖于该配置的所有托管bean和组件都必须重新初始化"或使用新配置值更新。 我想这会以某种方式导致"重启"春天的背景。
编辑:也许用jmx ......这样就可以了。或者你调用springboot的刷新端点
答案 2 :(得分:0)
以我的经验,共享环境(DEV,QA,PROD等)中的配置更改通常在应用程序实例的群集或服务器场之间共享。因此,推出配置更改的最佳方法imo是跨集群执行滚动重启。无论有没有容器,这种方法在云中也可以很好地工作。
如果您需要在此过程中保持会话完好无损,则无论如何,这都必须成为HA计划的一部分。