Spring Cloud Config 是 Spring Cloud 團隊建立的一個全新項目,用來爲分佈式系統中的基礎設施和微服務應用提供集中化的外部配置支持, 它分爲服務端與客戶端兩個部分。 其中服務端也稱爲分佈式配置中心, 它是一個獨立的微服務應用, 用來鏈接配置倉庫併爲客
戶端提供獲取配置信息、 加密/解密信息等訪問接口;而客戶端則是微服務架構中的各個微服務應用或基礎設施, 它們經過指定的配置中心來管理應用資源與業務相關的配置內容,並在啓動的時候從配置中心獲取和加載配置信息。 Spring Cloud Config 實現了對服務端和客戶端中環境變量和屬性配置的抽象映射, 因此它除了適用於 Spring 構建的應用程序以外,也能夠在任何其餘語言運行的應用程序中使用。 因爲 Spring Cloud Config 實現的配置中心默認採用 Git 來存儲配置信息, 因此使用 Spring Cloud Config 構建的配置服務器, 自然就支持對微服務應用配置信息的版本管理, 而且能夠經過 Git 客戶端工具來方便地管理和訪問配置內容git
建立一個基礎的 Spring Boot 工程, 命名爲 config-server, 並在 pom.xml 中引入下面的依賴:web
<parent> <groupid>org.springframework.boot</groupid> <artifactid>spring-boot-starter-parent</artifactid> <version>l.3.7.RELEASE</version> <rela七ivePath/> <!-- lookup paren七 from repository --> </parent>
<dependencies> <dependency> <groupid>org.springframework.cloud</groupid> <artifactid>spring-cloud-config-server</artifactid> </dependency> </dependencies>
<dependencyManagement> <dependencies> <dependency> <groupid>org.springframework.cloud</groupid> <artifactId>spring-cloud-dependencies</artifactId> <version>Brixton.SRS</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>
建立 Spring Boot 的程序主類, 並添加@EnableConfigServer 註解, 開啓 Spring Cloud Config 的服務端功能spring
@EnableConfigServer @SpringBootApplication public class Application { public static void main(S七ring [] args) { new SpringApplicationBuilder(Application.class) .web(true) .run(args) } }
在application.properties 中添加配置服務的基本信息以及 Git 倉庫的相關信息:bootstrap
spring.applica七ion.name=config-server server.port=7001 spring.cloud.config.server.git.uri=http://git.oschina.net/didispace/SpringCloud-Learning/ spring.cloud.config.server.git.searchPaths=spring_cloud_in_action/config-repo spring.cloud.config.server.git.username=username spring.cloud.config.server.git.password=password
其中 Git 的配置信息分別表示以下內容:服務器
建立一個Spring Boot應用, 命名爲config-client, 並在pom.xml中引入下述依賴架構
<parent> <groupid>org.springframework.boot</groupid> <artifactid>spring-boo七-starter-parent</artifactid> <version>l.3.7.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent>
<dependencies> <dependency> <groupid>org.springframework.boot</groupid> <artifactid>spring-boot-starter-web</artifactid> </dependency> <dependency> <groupid>org.springframework.cloud</groupid> <artifactId>spring-cloud-starter-config</artifactId> </dependency> </dependencies>
<dependencyManagement> <dependencies> <dependency> <groupid>org.springframework.cloud</groupid> <artifactid>spring-cloud-dependencies</artifactid> <version>Brixton.SRS</version> <type>pom</type> <scope江mport</scope> </dependency> </dependencies> </dependencyManagement>
建立Spring Boot的應用主類app
@SpringBootApplication public class Application { public static void main(String[] args) { new SpringApplicationBuilder(Application.class) .web(true) .run(args); } }
建立 bootstrap.properties 配置, 來指定獲取配置文件的 config-server位置分佈式
//對應配置文件規則中的{application} 部分
spring.application.name=didispace
//對應配置文件規則中的 {profile} 部分 spring.cloud.config.profile=dev
//對應配置文件規則中的 {label} 部分 spring.cloud.config.label=master
//配置中心 config-server 的地址 spring.cloud.config.uri=http://localhost:7001/ server.port=7002