前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。
一、簡介
分布式的系統往往有多個服務,會有不同的配置文件。
不同環境配置文件內容也各不相同: 開發環境、測試環境、生產環境。
為了方便管理數目眾多的配置文件,springcloud 有對應的配置文件管理:spring cloud config 。
在此組件中主要有 2 種 角色:config server ?配置文件管理中心 、
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??config client? 從 config server 中讀取真正需要的配置信息 。
配置文件支持放在本地,也支持放在遠程 Git 倉庫中 。
二、重用此系列工程的父 pom 工程 springcloud-base。
在其 pom 中加上依賴:
<!--配置文件管理--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-autoconfigure</artifactId></dependency>
新建文件夾 config , 并設置相應配置內容:
config-client-pro.properties :
version = pro -1.1.1.11- FZW -1.1.1
config-client-test.properties :
version = test-2.2.2.22
config-client-dev.properties :
version = dev-0.0.0.DEV-0.0.0
三、 新建 config-server 工程
1. file - new - module?
2. spring Initializr - module SDK 選擇自己的 JDK ,其余的可以不用填寫,next。
3. 填寫工程相關信息:包名、工程名等,next。
4. spring cloud config- 勾選 config server,next。
5. 工程名,代碼存放位置等,finish 。
6. 工程結構如下:
7.?pom.xml:
<?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.config</groupId><artifactId>config-server</artifactId><version>0.0.1-SNAPSHOT</version><name>config-server</name><description>配置文件管理 server</description><parent><groupId>com.base</groupId><artifactId>base-config</artifactId><version>0.0.1-SNAPSHOT</version></parent><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-config-server</artifactId></dependency></dependencies></project>
8. 在工程啟動類上加注解:@EnableConfigServer? ,開啟配置文件管理服務功能 。
package com.config.configserver;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.config.server.EnableConfigServer;@SpringBootApplication// 配置文件管理
@EnableConfigServer
public class ConfigServerApplication {public static void main(String[] args) {SpringApplication.run(ConfigServerApplication.class, args);}}
9. 配置文件中設置:
讀取的是 springcloud-base工程中新增的 config 文件夾下的配置文件信息。
# 工程名
spring.application.name=config-server# 端口
server.port=3333# git倉庫地址
spring.cloud.config.server.git.uri=https://gitee.com/FJ_WoMenDeShiJie/springcloud-base.git# 倉庫路徑
spring.cloud.config.server.git.searchPaths=config# 倉庫分支
spring.cloud.config.label=master# git倉庫用戶名 ( 公開庫-可不填 )
spring.cloud.config.server.git.username=# git倉庫密碼 ( 公開庫-可不填 )
spring.cloud.config.server.git.password=
10. 啟動工程訪問:http://localhost:3333/這里隨便寫/dev
表示訪問遠程倉庫中的配置文件成功 。訪問路徑最后的? dev? 在此測試時也可任意寫。
四、 新建 config-client?工程
1. file - new - module?
2. spring Initializr - module SDK 選擇自己的 JDK ,其余的可以不用填寫,next。
3. 填寫工程相關信息:包名、工程名等,next。
4. spring cloud config- 勾選 config client,next。
5. 工程名,代碼存放位置等,finish 。
6. 工程結構如下:
7.?pom.xml:
<?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.config</groupId><artifactId>config-client</artifactId><version>0.0.1-SNAPSHOT</version><name>config-client</name><description>配置文件管理 client</description><parent><groupId>com.base</groupId><artifactId>base-config</artifactId><version>0.0.1-SNAPSHOT</version></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></project>
8. 在工程啟動類上加注解:@RestController , 書寫?getVersion 方法,提供對外訪問。
package com.config.configclient;import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;
import org.springframework.context.support.PropertySourcesPlaceholderConfigurer;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
@SpringBootApplication
public class ConfigClientApplication {public static void main(String[] args) {SpringApplication.run(ConfigClientApplication.class, args);}@Value("${version}")String version;@RequestMapping(value = "/getVersion")public String getVersion() {return version;}/*** 增加此方法用以解決報錯:Could not resolve placeholder 'version' in value "${version}"* @return*/@Beanpublic static PropertySourcesPlaceholderConfigurer placeholderConfigurer() {PropertySourcesPlaceholderConfigurer c = new PropertySourcesPlaceholderConfigurer();c.setIgnoreUnresolvablePlaceholders(true);return c;}}
9. 配置文件設置:? 注意此配置文件的名字是:?bootstrap.properties 。
叫這個名字的原因:官方指定優先讀取此文件,bootstrap 在 application 之前加載 。
# 項目名
spring.application.name=config-client# 端口
server.port=4444# 倉庫分支
spring.cloud.config.label=master# 讀取文件:dev開發環境、test測試、pro生產
spring.cloud.config.profile=test# 配置文件管理服務 config-server 地址
spring.cloud.config.uri=http://localhost:3333/
此時設置為讀取 springcloud-base中的 配置文件 :config-client-test.properties
10. 啟動工程訪問:http://localhost:4444/getVersion
修改配置文件中訪問的文件:
此時設置為讀取 springcloud-base中的 配置文件 :config-client-dev.properties
重啟工程訪問:http://localhost:4444/getVersion
至此,config-server 從遠程倉庫讀取配置文件成功。?config-client 通過?config-server 讀取配置文件中的具體信息值也成功了。
在?config-client 配置文件中可通過修改?spring.cloud.config.profile 選項來設定讀取不同的配置文件 。
-------------------------------------------------------------
下一篇:springCloud - 第8篇 - 配置文件管理中心 - 集群模式(負載勻衡)使用
源碼見:https://gitee.com/FJ_WoMenDeShiJie/springcloud-base
https://gitee.com/FJ_WoMenDeShiJie/springcloud-config-server
https://gitee.com/FJ_WoMenDeShiJie/springcloud-config-client
-------------------------------------------------------------
PS:這個系列不定時更新,只是個人的學習分享,
內容全程參考書目:
《Spring Cloud 與 Docker 微服務架構空實戰?》、
《Spring Cloud 微服務實戰》及此書作者博客:http://blog.didispace.com/spring-cloud-learning/
《深入理解 Spring Cloud 與微服務構建》及此書作者博客:https://blog.csdn.net/forezp/article/details/70148833
--------------------------------------------------------------
以下出自:https://blog.csdn.net/forezp/article/details/81041028
config-server 啟動成功后,訪問路徑映射方式有以下幾種:
/{application}/{profile}[/{label}]
/{application}-{profile}.yml
/{label}/{application}-{profile}.yml
/{application}-{profile}.properties
/{label}/{application}-{profile}.properties
?