上一篇文章讲了SpringCloudConfig 集成Git仓库,配和 Eureka 注册中心一起使用,但是我们会发现,修改了Git仓库的配置后,需要重启服务,才可以得到最新的配置,这一篇我们尝试使用 Refresh 实现主动获取 Config Server 配置服务中心的最新配置
把上一篇,示例代码下载,才可以进行一下的操作,下载地址在文章末尾
spring-cloud-eureka-servicespring-cloud-config-serverspring-cloud-eureka-provider-1spring-cloud-eureka-provider-2spring-cloud-eureka-provider-3spring-cloud-feign-consumer
Config Client
修改第九篇文章项目
spring-cloud-eureka-provider-1spring-cloud-eureka-provider-2spring-cloud-eureka-provider-3
添加依赖
<!-- actuator 监控 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency>
安全认证
在 application.properties 添加以下配置.关闭安全认证
#关闭刷新安全认证
management.security.enabled=false
值是false的话,除开health接口还依赖endpoints.health.sensitive的配置外,其他接口都不需要输入用户名和密码了
开启 refresh
在程序的启动类 EurekaProviderApplication 通过 @RefreshScope 开启 SpringCloudConfig 客户端的 refresh 刷新范围,来获取服务端的最新配置,@RefreshScope要加在声明@Controller声明的类上,否则refresh之后Conroller拿不到最新的值,会默认调用缓存。
package io.ymq.example.eureka.provider;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RefreshScope
@RestController
@EnableEurekaClient
@SpringBootApplication
public class EurekaProviderApplication {
@Value("${content}")
String content;
@Value("${server.port}")
String port;
@RequestMapping("/")
public String home() {
return "Hello world ,port:" + port+",content="+content;
}
public static void main(String[] args) {
SpringApplication.run(EurekaProviderApplication.class, args);
}
}
测试服务
按照顺序依次启动项目
spring-cloud-eureka-servicespring-cloud-config-serverspring-cloud-eureka-provider-1spring-cloud-eureka-provider-2spring-cloud-eureka-provider-3-
spring-cloud-feign-consumer启动该工程后,访问服务注册中心,查看服务是否都已注册成功:http://localhost:8761/
- 在git仓库修改值后在浏览器访问
http://127.0.0.1:9000/hello -
刷新配置
- 通过
Postman发送POST请求到:http://localhost:8081/refresh,http://localhost:8083/refresh, -
访问服务,或者在浏览器访问
http://127.0.0.1:9000/helloF5 刷新发现:服务8082 没有刷新到最新配置 因为没有手动触发更新