Spring config用来为分布式系统中的基础设施和微服务提供集中化的外部配置支持,它分为服务端与客户端两个部分。其中服务端也称为分布式配置中心(一个独立微服务应用),用来连接配置仓库并为客户端提供配置信息;客户端则是微服务应用或者基础设施,它们通过指定的配置中来管理应用资源与业务相关的配置内容,并从服务端获取和加载配置信息。
Spring Cloud Config实现的配置中心默认采用Git来存储配置信息,也提供了其他的存储方式的支持,比如SVN仓库、本地化文化系统。
快速入门
服务端项目构建(普通的Spring Boot项目)
创建一个基础Spring Boot工程,命名为config-server,pom.xml 依赖如下
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.9.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
<spring-cloud.version>Edgware.RELEASE</spring-cloud.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-server</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
再Spring boot主类中添加 @EnableConfigServer注解,开启Spring Cloud Config的服务端功能
@SpringBootApplication
@EnableConfigServer
public class ConfigServerApplication {
public static void main(String[] args) {
SpringApplication.run(ConfigServerApplication.class, args);
}
}
在application.properties 中配置项目和连接git配置
spring.application.name=config-server
server.port=8888
spring.cloud.config.server.git.uri=https://github.com/hbuzhuhaoju/spring-cloud-learning
#可以配置多个查询路径
spring.cloud.config.server.git.searchPaths=spring-cloud-in-action/config-repo
spring.cloud.config.label=master