摘要
Spring Cloud Config 可以为微服务架构中的应用提供集中化的外部配置支持,它分为服务端和客户端两个部分,本文将对其用法进行详细介绍。
Spring Cloud Config 简介
Spring Cloud Config 分为服务端和客户端两个部分。服务端被称为分布式配置中心,它是个独立的应用,可以从配置仓库获取配置信息并提供给客户端使用。客户端可以通过配置中心来获取配置信息,在启动时加载配置。Spring Cloud Config 的配置中心默认采用Git来存储配置信息,所以天然就支持配置信息的版本管理,并且可以使用Git客户端来方便地管理和访问配置信息。
在Git仓库中准备配置信息
由于Spring Cloud Config 需要一个存储配置信息的Git仓库,这里我们先在Git仓库中添加好配置文件再演示其功能。
配置仓库目录结构
master分支下的配置信息
·config-dev.yml:
config:
info: "config info for dev(master)"
· config-test.yml:
config:
info: "config info for test(master)"
· config-prod.yml:
config:
info: "config info for prod(master)"
dev分支下的配置信息
· config-dev.yml:
config:
info: "config info for dev(dev)"
· config-test.yml:
config:
info: "config info for test(dev)"
· config-prod.yml:
config:
info: "config info for prod(dev)"
创建config-server模块
这里我们创建一个config-server模块来演示Spring Cloud Config 作为配置中心的功能。
在pom.xml中添加相关依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-server</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
在application.yml中进行配置
port: 8901
spring:
application:
name: config-server
cloud:
config:
server:
git: #配置存储配置信息的Git仓库
uri: https://gitee.com/macrozheng/springcloud-config.git
username: macro
password: 123456
clone-on-start: true #开启启动时直接从git获取配置
eureka:
client:
service-url:
defaultZone: http://localhost:8001/eureka/
在启动类上添加@EnableConfigServer注解来启用配置中心功能
@EnableConfigServer
@EnableDiscoveryClient
@SpringBootApplication
public class ConfigServerApplication {
public static void main(String[] args) {
SpringApplication.run(ConfigServerApplication.class, args);
}
}
通过config-server获取配置信息
这里我们通过config-server来演示下如何获取配置信息。
获取配置文件信息的访问格式
# 获取配置信息
/{label}/{application}-{profile}
# 获取配置文件信息
/{label}/{application}-{profile}.yml
占位符相关解释
·application:代表应用名称,默认为配置文件中的spring.application.name,如果配置了spring.cloud.config.name,则为该名称;
· label:代表分支名称,对应配置文件中的spring.cloud.config.label;
· profile:代表环境名称,对应配置文件中的spring.cloud.config.profile。
获取配置信息演示
· 启动eureka-server、config-server服务;
· 访问http://localhost:8901/master/config-dev来获取master分支上dev环境的配置信息;
访问http://localhost:8901/master/config-dev.yml来获取master分支上dev环境的配置文件信息,对比上面信息,可以看出配置信息和配置文件信息并不是同一个概念;
访问http://localhost:8901/master/config-test.yml来获取master分支上test环境的配置文件信息:
访问http://localhost:8901/dev/config-dev.yml来获取dev分支上dev环境的配置文件信息:
创建config-client模块
我们创建一个config-client模块来从config-server获取配置。
在pom.xml中添加相关依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
在bootstrap.yml中进行配置
server:
port: 9001
spring:
application:
name: config-client
cloud:
config: #Config客户端配置
profile: dev #启用配置后缀名称
label: dev #分支名称
uri: http://localhost:8901 #配置中心地址
name: config #配置文件名称
eureka:
client:
service-url:
defaultZone: http://localhost:8001/eureka/
添加ConfigClientController类用于获取配置
/**
* Created by macro on 2019/9/11.
*/
@RestController
public class ConfigClientController {
@Value("${config.info}")
private String configInfo;
@GetMapping("/configInfo")
public String getConfigInfo() {
return configInfo;
}
}
本文内容不用于商业目的,如涉及知识产权问题,请权利人联系51Testing小编(021-64471599-8017),我们将立即处理