SpringCloud- 分布式配置中心【动态刷新】
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
[](()3.修改配置
spring.application.name=config-client-refresh
server.port=9051
#设置服务注册中心地址,指向另一个注册中心
eureka.client.serviceUrl.defaultZone=http://dpb:123456@eureka1:8761/eureka/,http://dpb:123456@eureka2:8761/eureka/
#默认 false,这里设置 true,表示开启读取配置中心的配置
spring.cloud.config
.discovery.enabled=true
#对应 eureka 中的配置中心 serviceId,默认是 configserver
spring.cloud.config.discovery.serviceId=config-server
#指定环境
spring.cloud.config.profile=dev
#git 标签
spring.cloud.config.label=master
#springboot 默认开启了权限拦截 会导致 /refresh 出现 401,拒绝访问
management.security.enabled=false
同时我们需要在码云中创建一个新的配置文件
[](()4.刷新请求
因为 refresh 命令只支持 post 方式提交,所以我们不能直接在浏览器中访问。
现在获取信息
[](()5.修改 bean 对象的作用域
在 spring 中 bean 对象默认是单例模式,所以即便项目被刷新了,成员变量的值也不会改变,所以我们需要改变了 bean 对象的作用域
@RestController
@RefreshScope //刷新作用域
public class ShowController {
@Value("${e-book}")
private String msg;
@RequestMapping("/showMsg")
public String showMsg(){
return msg;
}
}
[](()6.通过 RestTemplate 发送 post 请求
/**
通过 RestTemplate 发送 post 请求来刷新
@param args
*/
public static void main(String[] args) {
RestTempl 《一线大厂 Java 面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义》无偿开源 威信搜索公众号【编程进阶路】 ate template = new RestTemplate();
String url = "http://localhost:9051/refresh";
template.postForLocation(url, null);
System.out.println("----");
}
[](()7.测试
评论