config分布式配置
解决每个项目的都有自己独立的配置文件导致代码膨胀:
通过消息总控(配置中心)与github连接,直接从github中获取需要的文件
服务端:
1.pom:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-server</artifactId>
</dependency>
2.yml:uri是指配置文件的地址,search-paths是具体的目录,label是具体的分支
server:
port: 3344
spring:
application:
name: cloud-config-center
cloud:
config:
server:
git:
uri: https://github.com/keithuddc/GlobalConfigFile.git
search-paths:
- GlobalConfigFile
label: master
eureka:
client:
service-url:
defaultZone: http://eureka7001.com:7001/eureka

3.主启动:
@SpringBootApplication
@EnableEurekaClient
@EnableConfigServer
public class configGlobalmain3344 {
public static void main(String[] args) {
SpringApplication.run(configGlobalmain3344.class,args);
}
}
4.测试:访问地址:比如要访问master分支下的config-test.yml文件:http://localhost:3344/master/config-test.yml

测试成功,那么就可以把这个配置文件应用到客户端:
客户端配置
1.pom:注意跟服务端的pom不同,没有server
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
2.bootstrap.yml,为什么要用这个配置呢?因为bootstrap.yml是系统级的配置,优先于用户级的application.yml加载.
spring:
application:
name: config-client
cloud:
config:
label: master # 分支名称
name: config #配置文件名称
profile: test # 读取的后缀,上述三个综合,为master分支上的config-test.yml的配置文件被读取,http://localhost:3344/master/config-dev.yml
uri: http://localhost:3344 #配置中心的地址
eureka:
client:
service-url:
defaultZone: http://eureka7001.com:7001/eureka
server:
port: 3366
3.主启动:
@SpringBootApplication
@EnableDiscoveryClient
4.把这个配置以rest形式暴露,我在配置文件config-test.yml中有config:info这个属性,所以直接访问即可,要是没有就会报注入错误:
Could not resolve placeholder 'config.info' in value "${config.info}"

5.测试:

问题:当github上的配置文件修改并提交时,配置中心也就是配置服务端可以通过刷新获取最新数据,但是3366客户端就只能重启才能获取到最新配置
下面针对上边这个问题进行修改:
config客户端实现刷新功能:
1.pom:
引入actuator包
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
2.改yml对外暴露监控端口:
management:
endpoints:
web:
exposure:
include: "*"
3.controller加注解@RefreshScope
4.测试:
修改github上的config-test文件,加上一个version版本号

这里还有一步,就是发送一个post请求:用来刷新代码的,需要安装一个curl工具:
安装方法参考下面链接:
https://jingyan.baidu.com/article/e3c78d64897d303c4c85f52d.html##1

5.刷新3344和3366项目,看看能不能出来这个版本号:
3344:
3366:
现在配置差不多完成了,但是 还有个问题,如果有100台机器,还会这样挨个post请求吗?不会的,下面整合一个bug消息总线
进行项目广播配置。

浙公网安备 33010602011771号