我使用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完美配合。
请帮忙吗?
由于
答案 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)
代替方法“ 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配置文件对我不起作用,当切换到属性文件时,它可以与上述配置一起使用。
谢谢