由于微服务设计到的服务个数较多,而众多的配置文件便会需要一个统一的配置管理工具来正确的管理,避免人工的过多参与,而spring cloud全家桶中的spring cloud config便充当了这个功能,解决分布式系统配置管理问题。下面开始学习springcloud config的相关信息。
spring cloud config包含server端和client端,以及可以存储配置文件的诸如SVN,github,gitlab上的文件。
以下用实例来验证之:
1.server端:
需要springcloud config相关的依赖
dependencies { compile('org.springframework.boot:spring-boot-starter-web') compile('org.springframework.boot:spring-boot-starter-actuator') compile('org.springframework.cloud:spring-cloud-starter-config') compile('org.springframework.cloud:spring-cloud-config-server') testCompile group: 'junit', name: 'junit', version: '4.12'}
需要开启@EnableConfigServer
@SpringBootApplication@EnableConfigServerpublic class ConfigApplication { public static void main(String[] args) { SpringApplication.run(ConfigApplication.class, args); }}
yml配置文件
server: port: 8888 #服务端口需为8888,改为其他端口失败,还不知为何spring: cloud: config: name: config-server #项目名称 label: master server: git: #uri: https://@gitlab.com/xxx.git #若为gitlab的地址,以git为后缀 uri: https://github.com/gholly/configProperties #github的地址 username: xxx password: xxx searchPaths: configPath //配置文件的路径
2.配置文件如下:
地址为:https://github.com/gholly/configProperties 此项目文件为公共文件无需输入用户名密码方可测试
3.客户端
依赖文件
dependencies { compile('org.springframework.boot:spring-boot-starter-web') compile('org.springframework.boot:spring-boot-starter-actuator') compile('org.springframework.cloud:spring-cloud-starter-config') testCompile('org.springframework.boot:spring-boot-starter-test')}
客户端文件
@RestController@RefreshScope@SpringBootApplicationpublic class ClientApplication { public static void main(String[] args) { SpringApplication.run(ClientApplication.class, args); } @Value("${test}") public String hh; @RequestMapping("/hjk") public String hhh(){ return hh; }}
配置文件:
server: port: 9000 spring: cloud: config: label: master uri: http://localhost:8888/ #config服务端的服务 profile: dev 配置文件前缀之一 application: name: config #此名字需与git上配置文件的名字相一致
4.测试结果: