当前位置: 首页 > 知识库问答 >
问题:

Spring Cloud Config Server并在整个Spring Boot应用程序上应用@refreshScope

汪茂
2023-03-14

我正在尝试用Spring Cloud Config Server动态刷新我的属性,在应用程序范围内。我将配置服务器嵌入到我的Spring Boot Client应用程序中,应用程序完美地启动了。

当我试图更新一个属性时,例如:spring.datasource.url,然后发送post请求刷新执行器:http://localhost:9190/management/refresh,得到预期的结果:

[
   "spring.datasource.url"
]

我还为测试目的创建了一个控制器:

@Value("${spring.datasource.url}")
private String message;

@RequestMapping("/message")
String getMessage() {
    return this.message;
}

但是,当我在:http://localhost:9290/message上点击这个控制器时,仍然得到${spring.datasource.url}的未更新的旧值。

我必须在控制器的类上显式添加@refreshScope来获取更新的值。

    null
<spring-cloud.version>Edgware.SR1</spring-cloud.version>
<spring-boot-version>1.5.9.RELEASE</spring-boot-version>

共有1个答案

陈马鲁
2023-03-14

需要@refreshScope来重新创建bean,该bean又从Spring环境获得更新后的值。另一个选项是使用@configurationpropertiesbeans,这些beans在/refresh上自动重新绑定,而不使用@refreshScope。没有选项可以自动使所有bean@refreshScope

 类似资料:
  • 我试图在SpringMVC中运行SpringBoot应用程序,在SpringMVCPOM中添加SpringBoot应用程序依赖项,并扫描SpringBoot包,但我面临以下问题

  • 我是kubernetes的新手,需要在openshift平台上使用k8s confimap将springboot应用程序的属性文件外部化。我已将属性文件保存在git repo中,作为“greeter.message=Spring Bootmyapplication.properties已在库伯内特斯上挂载为卷!”并使用“oc create confimap myconfig--from-file=

  • 我想知道这种情况下的最佳实践是什么: 我正在模拟一个电梯系统,该系统目前正在将所有输出转储到控制台。这不容易追踪,而且很难想象每层楼的问题状态以及当前算法的效率。设置如下: 一对人-生产者/消费者创建随机的人,并将他们放置在每个楼层的特定目的地。每一层都有供人们上下活动的问讯处。电梯与每层楼和一个调度器交互,以决定下一步去哪里以及接谁。 将此设置表示为gui时,将每个线程/对象的当前状态转换为gu

  • 本文向大家介绍StackExchange.Redis 在整个应用程序中复用复用器,包括了StackExchange.Redis 在整个应用程序中复用复用器的使用技巧和注意事项,需要的朋友参考一下 示例            

  • 完成干净的构建后,我将war文件复制到Tomcat的文件夹中。但是部署会发生两次,并且在上下文已经存在的情况下以异常结束。我错过了什么? 非常感谢您的帮助。

  • 我正在将一个非常基本的web应用程序部署到Google应用程序引擎。我使用的是Springboot,我可以在本地很好地运行应用程序,但当我部署到Google时,应用程序引擎不会启动实例。我在启动时配置了一个云SQL数据源。 我有云sql配置属性配置src/main/Resources/application.properties.App Engine似乎找不到这些属性,所以它无法正确设置Cloud