注意啦,注意啦,注意啦
根据大神的教导来实现的:想看大神的去–>我是大神,神龙见首不见尾?
业务需求:
在上一篇中主要讲了Spring Cloud Config的本地与GIT使用的用法,但是当配置文件修改后重新提交后,客户端获取的仍然是修改前的配置信息,需要重启客户端才能获取最新的配置信息。
因此我们需要客户端能够动态进行更新,幸好springcloud官方已经给出方案,所以我们只需要使用就行了。
开发环境:
服务项目
1.cloud-config-bus-eureka :注册中心
2.cloud-config-bus-server: 配置中心
3.cloud-config-bus-client :客户端
pom.xml配置和代码如下:
org.springframework.cloud
spring-cloud-starter-netflix-eureka-server
org.springframework.boot
spring-boot-starter-test
test
application.properties配置和代码如下:
spring.application.name=cloud-config-bus-eureka
server.port=1000
eureka.client.fetch-registry=false
eureka.client.register-with-eureka=false
eureka.client.service-url.defaultZone=http://localhost:1000/eureka/
** 启动类代码如下:**
@EnableEurekaServer
@SpringBootApplication
public class CloudConfigbusEurekaApplication {
public static void main(String[] args) {
SpringApplication.run(CloudConfigbusEurekaApplication .class, args);
System.out.println("注册中心启动。。。。");
}
}
pom.xml配置和代码如下:
org.springframework.cloud
spring-cloud-config-server
org.springframework.cloud
spring-cloud-starter-netflix-eureka-client
org.springframework.boot
spring-boot-starter-test
test
application.properties配置和代码如下:
spring.application.name=cloud-config-bus-server
server.port=1100
eureka.client.service-url.defaultZone=http://localhost:1000/eureka/
# 读取git的路径
#git仓库的地址
spring.cloud.config.server.git.uri = https://github.com/xpf0321/cloud-config-test/
# git仓库地址下的相对地址 多个用逗号","分割
spring.cloud.config.server.git.search-paths = /springcloud-config/config-repo
# git仓库的账号
spring.cloud.config.server.git.username =用户名是你的
# git仓库的密码
spring.cloud.config.server.git.password =密码是你的
上面的git配置应该是你自己的git用的是数据,如果你看到的话,需要将gitl配置信息改为你git里的信息
** 启动类代码如下:**
@EnableDiscoveryClient
@EnableConfigServer
@SpringBootApplication
public class CloudConfigBusServerApplication {
public static void main(String[] args) {
SpringApplication.run(CloudConfigBusServerApplication.class, args);
System.out.println("配置中心启动。。。");
}
}
如果你细心的话发现这两个其实和上一篇的是一样的,没有啥变化
我要将上一篇的cloud-config-client进行改造,改为cloud-config-bus-client
算了,还是一步步来把。
pom.xml配置和代码如下:
org.springframework.cloud
spring-cloud-starter-config
org.springframework.boot
spring-boot-starter-actuator
org.springframework.boot
spring-boot-starter-web
org.springframework.cloud
spring-cloud-starter-netflix-eureka-client
org.springframework.boot
spring-boot-starter-test
test
application.properties配置和代码如下:
spring.application.name=cloud-config-bus-client
server.port=1200
management.endpoints.web.exposure.include=refresh
management.endpoints.web.exposure.include=refresh //该配置表示暴露刷新的地址为refresh。
注:如果是SpringBoot1.x的版本,那么配置改成management.security.enabled=false即可。
bootstrap.properties配置和代码如下:
spring.cloud.config.name=configtest
spring.cloud.config.profile=dev
spring.cloud.config.label=master
spring.cloud.config.fail-fast=false
spring.cloud.config.discovery.enabled=true
spring.cloud.config.discovery.service-id=cloud-config-bus-server
eureka.client.service-url.defaultZone=http://localhost:1000/eureka/
配置说明:
是啥呢?想知道就到上一篇看去。
controller代码如下:
@RefreshScope
@RestController
public class BusClientController {
/**
* name
*/
@Value("${mi}")
private String name;
@RequestMapping("hello")
public String hello(@RequestParam("info")String info){
return name+","+info;
}
}
Controller增加一个@RefreshScope注解,该注解表示在接到SpringCloud配置中心配置刷新的时候,自动将新的配置更新到该类对应的字段中。
** 启动类代码如下:**
@EnableDiscoveryClient
@SpringBootApplication
public class CloudConfigBusClientApplication {
public static void main(String[] args) {
SpringApplication.run(CloudConfigBusClientApplication.class, args);
System.out.println("客户端启动。。。");
}
}
注意:端口不要用6000,端口不要用6000,端口不要用6000
依次启动
1.cloud-config-bus-eureka 端口:1000
2.cloud-config-bus-server 端口:1100
3.cloud-config-bus-client 端口:1200
在浏览器输入:
http://localhost:1200/hello?info=ooo
页面返回显示:
hello beibi ooo
可以正常得到服务端configtest-pro.properties的配置信息。
然后在把configtest-dev.properties的配置更改为:
mi=hello beibi!!Oh. No NO
再次在浏览器输入:
http://localhost:1200/hello?info=ooo
页面返回显示:
hello beibi ooo
可以发现配置没有实时刷新,官方文档上说,需要客户端通过Post请求触发各自的/refresh.
我用PostMan工具模仿post请求刷新,然后在查看信息。
[
"config.client.version",
"mi"
]
说明完成mi的配置刷新了,再次在浏览器输入:
http://localhost:1200/hello?info=ooo
页面返回显示:
hello beibi!!Oh. No NO,ooo
注意啦,注意啦,注意啦
根据大神博客的教导来实现的:想看大神的去–>我是大神,神龙见首不见尾?