Spring Cloud Config : 配置管理工具包,讓你可以把配置放到遠程服務器,集中化管理集群配置,目前支持本地存儲、Git以及Subversion。
配置中心也區分為服務端和客戶端,本次體驗以實現配置中心為主,更多高級功能未實現(比如 動態刷新配置)
服務端推薦作為獨立的服務
Spring Cloud Config 服務端 配置:
1、初始化一個SpringBoot的配置中心服務端應用
2、引入配置中心的依賴

3、修改配置文件 application.yml ,此處把配置放在了開源中國的碼雲上面

spring: application: name: config-server cloud: config: server: git: # 配置文件只搜索url目錄下的searchPaths uri: git@gitee.com:szliugx/spring_cloud_config.git # 指定搜索路徑,如果有多個路徑則使用,分隔 searchPaths: infomation/ # 對於使用git,svn做為后端配置,從遠程庫獲取配置文件,需要存儲到本地文件 basedir: /tmp/spring-cloud-repo # 配置中心通過git從遠程git庫,有時本地的拷貝被污染,這時配置中心無法從遠程庫更新本地配置,設置force-pull=true,則強制從遠程庫中更新本地庫 force-pull: true #username: username #password: password #服務注冊中心端口號 server: port: 6130 #服務注冊中心實例的主機名、端口 #是否向服務注冊中心注冊自己 #是否檢索服務 #服務注冊中心的配置內容,指定服務注冊中心的位置 eureka: port: 6110 instance: hostname: localhost client: register-with-eureka: true fetch-registry: false serviceUrl: defaultZone: http://${eureka.instance.hostname}:${eureka.port}/eureka/
每個服務添加一個屬於自己的配置文件+環境在遠程空間,如:
https://gitee.com/szliugx/spring_cloud_config/blob/master/infomation/user-dev.properties
注意遠程配置的命名,如 user-dev.properties,應用名-環境.properties/應用名-環境.yml
如果需要在線上修改配置的話,個人推薦啟用 .properties 的配置,畢竟 .yml 有格式限制
4、啟動類上添加注釋 @EnableConfigServer 和 @EnableEurekaClient
服務端啟動后,可以使用 http://應用IP:port/服務名/環境 能訪問了
如:http://127.0.0.1:6110/usr/dev 就能看到 user服務的開發環境的配置了,其它服務或者環境同理添加即可
Spring Cloud Config 客戶端 配置:
1、引入配置中心的依賴

<?xml version="1.0" encoding="UTF-8"?> <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> <groupId>com.zjj7</groupId> <artifactId>user</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>user</name> <description>Demo project for Spring Boot</description> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.0.4.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> </properties> <!--配置倉庫--> <repositories> <repository> <id>aliRepository</id> <name>aliRepository</name> <url>http://maven.aliyun.com/nexus/content/groups/public/</url> <snapshots> <enabled>false</enabled> </snapshots> </repository> </repositories> <!--cloud--> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>Finchley.RELEASE</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <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> <!--lombok依賴--> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.16.10</version> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>
2、添加配置文件 bootstrap.yml

spring: application: name: user cloud: config: discovery: enabled: true #開啟通過服務來訪問Config Server的功能 service-id: config-server profile: dev label: master #服務注冊中心端口號 server: port: 6120 #服務注冊中心實例的主機名、端口 #是否向服務注冊中心注冊自己 #表示是否從eureka服務器獲取注冊信息 #服務注冊中心的配置內容,指定服務注冊中心的位置 eureka: port: 6110 instance: hostname: localhost client: register-with-eureka: true fetch-registry: true serviceUrl: defaultZone: http://${eureka.instance.hostname}:${eureka.port}/eureka/
3、啟動類上添加注釋 @EnableEurekaClient
好了,統一配置中心也完成了,啟動配置中心服務端,重啟使用統一配置的客戶端即可生效