前言
本章講解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進行測試
經過測試,完美運行!