Spring Boot 2:动态刷新属性不起作用

问题描述 投票:2回答:2

我已经按照这个官方教程Getting Started Centralized Configuration使用spring boot 2.0.0.RELEASE和spring cloud Finchley.M8

但是动态刷新属性(不重启)不起作用。在一些调试之后,我注意到在ContextRefresher.class的方法refresh()中,它正确地返回了更改的键,但是在下次使用时重构了使用@RefreshScope注释的bean。它仍然看到旧的值而不是更新的值。

注意:这与spring boot v 1.5.6和spring cloud Edgware.RELEASE完美配合。

有什么帮助吗?

谢谢

spring-boot spring-cloud spring-boot-actuator
2个回答
6
投票

在spring boot 2.0.1.RELEASE中看起来spring.cloud.config.uri总是在寻找端口8888并且不接受其他值,所以我把下面的配置(你可以忽略它,因为它是客户端的默认值,并且服务器应该在端口8888上运行)

spring:
  cloud:
    config:
      uri: http://localhost:8888

我还尝试在客户端中公开所有其他服务以进行测试,如下所示

management:
  endpoints:
    web:
      exposure:
        include: '*'

或使用以下内容仅允许刷新

management:
  endpoints:
    web:
      exposure:
        include: refresh

然后调用POST方法而不是GET进行刷新

$ curl -X POST localhost:8080/actuator/refresh -d {} -H "Content-Type: application/json"

最后,它的工作原理。


0
投票

enter image description here

而不是方法“POST”,使用“OPTIONS”方法为弹簧启动2.0或更高版本调用“执行器/刷新”。

对于较低版本(<2.0),请使用端点“context / refresh”

确保你在management.endpoints.web.exposure.include=*中定义了application.properties.

© www.soinside.com 2019 - 2024. All rights reserved.