前言
本章讲解Spring Cloud Config组件的相关知识
方法
1.概念
Spring Cloud Config为分布式系统中的外部化配置提供服务器和客户端支持。使用Config Server,您可以集中管理所有环境中应用程序的外部属性。客户端和服务器上的概念与Spring Environment和PropertySource抽象完全相同,因此它们非常适合Spring应用程序,但可以与以任何语言运行的任何应用程序一起使用。当应用程序从开发人员迁移到测试人员并进入生产过程时,您可以管理这些环境之间的配置,并确保应用程序具有在迁移时需要运行的所有内容。服务器存储后端的默认实现使用git,因此它轻松支持配置环境的标记版本,并且可以由各种工具访问以管理内容。添加替代实现并将其插入Spring配置很容易。
上面是来自官网的一些描述,一句话就是它为我们的微服务提供了集中化的外部配置支持,当我们的微服务达到成百量级时,该组件将显得尤为重要!
如同Eureka,它也是一个微服务。他有两种角色:
Spring Cloud Config Server:该微服务通过与Git,svn等交互,动态的加载配置文件
Spring Cloud Config Client:该微服务与Server端交互,获取所需要的配置,如eureka、provider、consumer等
2.Spring Cloud Config Server配置
1)首先需要在github上创建我们的配置文件工程
2)将该工程拉取至本地并添加相应配置文件
application.properties
spring.profiles.active=dev
application-dev.properties
#dev
spring.profiles=dev
spring.application.name=config-server-dev
并且将这些配置文件提交至git
3)创建config-server工程,进行必要的配置
pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.7.RELEASE</version>
</parent>
<groupId>cn.edu.ccut</groupId>
<artifactId>springcloud-config-server</artifactId>
<version>0.0.1-SNAPSHOT</version>
<properties>
<!-- 设定Java的版本 -->
<java.version>1.8</java.version>
<!-- 解决pom.xml首行报错 -->
<maven-jar-plugin.version>3.1.0</maven-jar-plugin.version>
<!-- spring cloud版本 -->
<spring-cloud.version>Greenwich.SR3</spring-cloud.version>
</properties>
<dependencies>
<!-- 配置springBoot的启动器 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<!-- config-server坐标 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-server</artifactId>
</dependency>
<!-- 配置devtools -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
</dependency>
<!-- 配置springBoot的test启动器 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
</dependency>
</dependencies>
<!-- spring cloud依赖管理 -->
<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>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<mainClass>cn.edu.ccut.ConfigServerApp</mainClass>
</configuration>
</plugin>
</plugins>
</build>
</project>
application.properties
#server application
spring.application.name=config-server
#server port
server.port=8688
#config git uri
spring.cloud.config.server.git.uri=https://github.com/wangjian136/spring-cloud-config.git
#search path
spring.cloud.config.server.git.search-paths=config-server
启动器类配置加入该注解:@EnableConfigServer
package cn.edu.ccut;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.config.server.EnableConfigServer;
@EnableConfigServer
@SpringBootApplication
public class ConfigServerApp {
public static void main(String[] args) {
SpringApplication.run(ConfigServerApp.class, args);
}
}
4)启动项目输入如下地址进行访问
http://localhost:8688/application-dev.properties
http://localhost:8688/application-test.properties
出现这两个画面则证明Config Server配置成功!!
3.Spring Cloud Config Client配置
客户端我们选择一个eureka server来进行讲解吧!
1)创建一个Eureka的Server工程
以前的Eureka Server的单机版工程是如下配置的,存在开发环境和测试环境的配置切换
2)在git上新建Eureka Server的配置文件并上传
3)去掉原来eureka server上的配置文件,新建bootstrap.properties配置文件
bootstrap.properties配置文件为系统级的配置文件,当application.properties文件和bootstrap.properties共存时,很显然bootstrap.properties优先级更高!
我们对应的将刚刚测试的server端的application.properties文件进行修改
#server application
spring.application.name=config-server
#server port
server.port=8688
#config git uri
spring.cloud.config.server.git.uri=https://github.com/wangjian136/spring-cloud-config.git
#search path
spring.cloud.config.server.git.search-paths=eureka-server
在bootstrap.properties添加如下内容:
#spring config server
spring.cloud.config.uri=http://localhost:8688
spring.cloud.config.name=application
spring.cloud.config.profile=dev
这样我们在启动这个eureka server的时候,就会自动的去config server中去寻找
4)启动eureka server进行测试
经过测试,完美运行!