SpringCloud Config為微服務架構的微服務提供統一集中的外部配置支援,便于統一管理服務配置。SpringCloud Config分為服務端和用戶端兩部分。
服務端也就是分布式配置中心,用于連接配接配置伺服器擷取配置資訊。
用戶端是通過配置中心在啟動時擷取對應業務相關的配置資訊。
中文文檔:
https://springcloud.cc/spring-cloud-config.html
以下内容是基于上一節的工程,實作SpringCloud Config配置中心和用戶端
源碼下載下傳:https://github.com/hnyydp/microservice
1、Config Server配置中心建立
(1)、在Github上建立一個microservice-config項目,上傳一個配置檔案mircoservice-application.yml
spring:
profiles: dev
hello: hello-dev
---
spring:
profiles: prod
hello: hello-prod
(2)、建立一個
microservice-config-server-7001
服務,添加SpringCloud Config Server依賴:
<!-- springcloud config server-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-server</artifactId>
</dependency>
(3)、添加配置資訊
application.yml
server:
context-path: /
port:
spring:
application:
name: microservice-config-server
cloud:
config:
label: master #配置倉庫的分支
server:
git:
uri: https://github.com/hnyydp/microservice-config.git #配置git倉庫位址
#search-paths: microservice-config/src/main/resources/properties #配置倉庫路徑
##通路git倉庫的使用者名密碼 公共倉庫可以不寫,私有倉庫需要寫
#username: xxx
#password: xxx
(4)、在主啟動類ConfigServerApplication_7001中添加
@EnableConfigServer
@EnableConfigServer //開啟Config配置中心
@SpringBootApplication
public class ConfigServerApplication_7001 {
public static void main(String[] args) {
SpringApplication.run(ConfigServerApplication_7001.class, args);
}
}
(5)、啟動服務,分别通路http://localhost:7001/mircoservice-application-dev.yml,http://localhost:7001/mircoservice-application-prod.yml,如果能擷取到配置資訊,則說明配服務端置中心啟動成功。
可以通過多種方式通路資源,Http請求位址和資源檔案映射如下:
-
/{application}/{profile}[/{label}]
-
/{application}-{profile}.yml
-
/{label}/{application}-{profile}.yml
-
/{application}-{profile}.properties
-
/{label}/{application}-{profile}.properties
2、Config用戶端建立
(1)、建立一個
microservice-config-client-7002
服務,添加SpringCloud Config Client依賴:
<!-- springcloud config -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-client</artifactId>
</dependency>
(2)、添加配置資訊
bootstrap.yml
,注意配置檔案名是boostrap,他是系統級别配置,比application使用者級别配置的優先級更高,可以同時存在。
server:
port:
spring:
application:
name: microservice-config-client
cloud:
config:
name: mircoservice-application #github上讀取資源名稱
profile: prod #環境
label: master #遠端倉庫的分支
uri: http://localhost:7001/ #服務配置中心的網址
(3)、編寫API接口”/hello”,傳回從配置中心讀取的spring.hello的值
@RestController
@SpringBootApplication
public class ConfigClientApplication_7002 {
public static void main(String[] args) {
SpringApplication.run(ConfigClientApplication_7002.class, args);
}
@Value("${spring.hello}")
private String hello;
@RequestMapping("/hello")
public String hello() {
return hello;
}
}
(4)、啟動配置中心,啟動該服務,通路localhost:7002/hello,變更配置中的環境profile,傳回如下結果,說明SpringCloud Config用戶端應用成功。