摘要:工程描述端口,從數據庫中讀取配置端口,從讀取配置搭建工程創建工程,在工程的文件引入的起步依賴,的連接器,的起步依賴,代碼如下在工程的配置文件下做以下的配置其中,為讀取的配置文件名,從數據庫中讀取,必須為。
轉載請標明出處:
https://blog.csdn.net/forezp/...
本文出自方志朋的博客
Spring Cloud Config Server最常見是將配置文件放在本地或者遠程Git倉庫,放在本地是將將所有的配置文件統一寫在Config Server工程目錄下,如果需要修改配置,需要重啟config server;放在Git倉庫,是將配置統一放在Git倉庫,可以利用Git倉庫的版本控制。本文將介紹使用另外一種方式存放配置信息,即將配置存放在Mysql中。
整個流程:Config Sever暴露Http API接口,Config Client 通過調用Config Sever的Http API接口來讀取配置Config Server的配置信息,Config Server從數據中讀取具體的應用的配置。流程圖如下:
案例實戰在本案例中需要由2個工程,分為config-server和config-client,其中config-server工程需要連接Mysql數據庫,讀取配置;config-client則在啟動的時候從config-server工程讀取。本案例Spring Cloud版本為Greenwich.RELEASE,Spring Boot版本為2.1.0.RELEASE。
工程 | 描述 |
---|---|
config-server | 端口8769,從數據庫中讀取配置 |
config-client | 端口8083,從config-server讀取配置 |
創建工程config-server,在工程的pom文件引入config-server的起步依賴,mysql的連接器,jdbc的起步依賴,代碼如下:
org.springframework.cloud spring-cloud-config-server mysql mysql-connector-java org.springframework.boot spring-boot-starter-jdbc
在工程的配置文件application.yml下做以下的配置:
spring: profiles: active: jdbc application: name: config-jdbc-server datasource: url: jdbc:mysql://127.0.0.1:3306/config-jdbc?useUnicode=true&characterEncoding=utf8&characterSetResults=utf8&serverTimezone=GMT%2B8 username: root password: 123456 driver-class-name: com.mysql.jdbc.Driver cloud: config: label: master server: jdbc: true server: port: 8769 spring.cloud.config.server.jdbc.sql: SELECT key1, value1 from config_properties where APPLICATION=? and PROFILE=? and LABEL=?
其中,spring.profiles.active為spring讀取的配置文件名,從數據庫中讀取,必須為jdbc。spring.datasource配置了數據庫相關的信息,spring.cloud.config.label讀取的配置的分支,這個需要在數據庫中數據對應。spring.cloud.config.server.jdbc.sql為查詢數據庫的sql語句,該語句的字段必須與數據庫的表字段一致。
在程序的啟動文件ConfigServerApplication加上@EnableConfigServer注解,開啟ConfigServer的功能,代碼如下:
@SpringBootApplication @EnableConfigServer public class ConfigServerApplication { public static void main(String[] args) { SpringApplication.run(ConfigServerApplication.class, args); } }初始化數據庫
由于Config-server需要從數據庫中讀取,所以讀者需要先安裝MySQL數據庫,安裝成功后,創建config-jdbc數據庫,數據庫編碼為utf-8,然后在config-jdbc數據庫下,執行以下的數據庫腳本:
CREATE TABLE `config_properties` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `key1` varchar(50) COLLATE utf8_bin NOT NULL, `value1` varchar(500) COLLATE utf8_bin DEFAULT NULL, `application` varchar(50) COLLATE utf8_bin NOT NULL, `profile` varchar(50) COLLATE utf8_bin NOT NULL, `label` varchar(50) COLLATE utf8_bin DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8 COLLATE=utf8_bin
其中key1字段為配置的key,value1字段為配置的值,application字段對應于應用名,profile對應于環境,label對應于讀取的分支,一般為master。
插入數據config-client 的2條數據,包括server.port和foo兩個配置,具體數據庫腳本如下:
insert into `config_properties` (`id`, `key1`, `value1`, `application`, `profile`, `label`) values("1","server.port","8083","config-client","dev","master"); insert into `config_properties` (`id`, `key1`, `value1`, `application`, `profile`, `label`) values("2","foo","bar-jdbc","config-client","dev","master");搭建config-client
在 config-client工程的pom文件,引入web和config的起步依賴,代碼如下:
org.springframework.boot spring-boot-starter-web org.springframework.cloud spring-cloud-starter-config
在程序的啟動配置文件 bootstrap.yml做程序的相關配置,一定要是bootstrap.yml,不可以是application.yml,bootstrap.yml的讀取優先級更高,配置如下:
spring: application: name: config-client cloud: config: uri: http://localhost:8769 fail-fast: true profiles: active: dev
其中spring.cloud.config.uri配置的config-server的地址,spring.cloud.config.fail-fast配置的是讀取配置失敗后,執行快速失敗。spring.profiles.active配置的是spring讀取配置文件的環境。
在程序的啟動文件ConfigClientApplication,寫一個RestAPI,讀取配置文件的foo配置,返回給瀏覽器,代碼如下:
@SpringBootApplication @RestController public class ConfigClientApplication { public static void main(String[] args) { SpringApplication.run(ConfigClientApplication.class, args); } @Value("${foo}") String foo; @RequestMapping(value = "/foo") public String hi(){ return foo; } }
依次啟動2個工程,其中config-client的啟動端口為8083,這個是在數據庫中的,可見config-client從 config-server中讀取了配置。在瀏覽器上訪問http://localhost:8083/foo,瀏覽器顯示bar-jdbc,這個是在數據庫中的,可見config-client從 config-server中讀取了配置。
參考資料https://cloud.spring.io/sprin...
源碼下載https://github.com/forezp/Spr...
掃一掃,支持下作者吧(轉載本站文章請注明作者和出處 方志朋的博客)
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/73362.html
摘要:,這是標記配置文件集版本化的服務器端特性。要配置對稱密鑰,需要將設置為秘密字符串或使用環境變量將其排除在純文本配置文件之外。 Spring Cloud Config Server Spring Cloud Config Server為外部配置提供基于HTTP資源的API(名稱—值對或等效的YAML內容),通過使用@EnableConfigServer注解,服務器可嵌入Spring Bo...
摘要:快速入門這個快速入門使用的服務器和客戶端。屬性在端點中顯示為高優先級屬性源,如以下示例所示。名為的屬性源包含值為且具有最高優先級的屬性。屬性源名稱中的是存儲庫,而不是配置服務器。 Spring Cloud Config快速入門 這個快速入門使用Spring Cloud Config Server的服務器和客戶端。 首先,啟動服務器,如下所示: $ cd spring-cloud-con...
摘要:概要什么是創建并運行一個建立一個創建并運行一個是什么什么是配置信息一個中不只是代碼還需要連接資源和其它應用經常有很多需要外部設置的項去調整行為如切換不同的數據庫國際化等應用中的會經常見到的等就是配置信息常見的實現信息配置的方法硬編碼缺點需要 概要 什么是Spring Cloud Config? 創建并運行一個Spring Cloud Config Server 建立一個Reposit...
摘要:在這種情況下,名為的可選屬性非常有用,它是一個標志,指示服務器是否應從其自己的遠程存儲庫配置自身,默認情況下,該標志處于關閉狀態,因為它可能會延遲啟動。 嵌入Config Server Config Server作為獨立應用程序運行最佳,但是,如果需要,你可以將其嵌入另一個應用程序中,為此,請使用@EnableConfigServer注解。在這種情況下,名為spring.cloud.c...
摘要:默認使用存儲配置內容也可以使用本地文件系統或存儲配置。會在微服務啟動時,請求以獲取所需要的配置屬性,并且緩存在本地以提高性能。 簡介 對于傳統的單體應用,通常是使用配置文件來管理所有的配置,但是在微服務架構中,會存在很多的微服務,如果每一個微服務都維護自己的配置,顯然是非常的麻煩且不靈活,維護成本會非常高 使用Spring Cloud Config可以實現一下功能 集中管理配置 不同...
閱讀 3917·2021-11-24 09:38
閱讀 3088·2021-11-17 09:33
閱讀 3863·2021-11-10 11:48
閱讀 1234·2021-10-14 09:48
閱讀 3123·2019-08-30 13:14
閱讀 2543·2019-08-29 18:37
閱讀 3386·2019-08-29 12:38
閱讀 1410·2019-08-29 12:30