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

时间:2018-03-19 12:30:17

标签: spring-boot spring-cloud spring-boot-actuator

我使用spring boot 2.0.0.RELEASE和spring cloud Finchley.M8跟随了这个官方教程Getting Started Centralized Configuration

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

  

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

请帮忙吗?

由于

3 个答案:

答案 0 :(得分:5)

在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"

最后,它有效。

答案 1 :(得分:0)

enter image description here

代替方法“ POST”,使用“ OPTIONS”方法调用Spring Boot 2.0或更高版本的“ actuator / refresh”。

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

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

答案 2 :(得分:0)

在application.properties-

中使用以下内容
management.endpoint.refresh.enabled=true
management.endpoint.restart.enabled=true
management.endpoint.health.enabled=true
management.endpoint.health.show-details=always
management.endpoint.info.enabled=true
management.endpoints.web.exposure.include=info,health,refresh    

使用yaml配置文件对我不起作用,当切换到属性文件时,它可以与上述配置一起使用。

谢谢