Spring Cloud Config的手动刷新。在Config Server 和Config Client都在运行的情况下,修改GitHub上的application.yml内容也就是仓库中的配置属性,再手动刷新Config Client即可达到运行状态下修改配置属性。
1、首先要给Config Client添加上actuator依赖。
2、给Config Client的Controller类加上注解@RefreshScope
@RefreshScope注解。我们在Java中创建的Bean,其中绑定了外部配置的参数,仅在首次访问时初始化。如果一个Bean添加了@RefreshScope注解,这个Bean中的参数就会进行强制懒加载。而其原理就是,这个注解会给范围内的每个bean创建一个代理对象,如果刷新bean,则下次访问bean时(即执行方法)将创建一个新实例。所有生命周期方法都应用于bean实例,因此在刷新时会调用在bean工厂的销毁回调方法,然后在创建新实例时正常调用初始化回调。从原始bean定义创建新的bean实例,因此在创建时会重新加载所有外部配置属性(属性占位符或字符串文字中的表达式)。所以我们刷新了GreetingController类,此时会创建该bean的新的实例,并重新加载所有外部配置属性,GreetingProps上绑定greeting属性也会被重新加载。
3、更新Config Client的application.yml文件,添加暴露refresh端点的配置。Spring Boot 2.0.3.RELEASE之后需要新增,之前不需要。
、
4、先运行一遍Config Server 和Config Client看看输出的值。用curl http://localhost:8080/hello 查看。
再修改完仓库的配置后,手动刷新 curl http://localhost:8080/actuator/refresh -X POST
告诉我们发生改变的配置属性 greeting.message。
控制台的信息也显示重新拉取了配置。
再用curl http://localhost:8080/hello 可以看到值已经发生改变