摘要:工程描述端口,從數(shù)據(jù)庫(kù)中讀取配置端口,從讀取配置搭建工程創(chuàng)建工程,在工程的文件引入的起步依賴,的連接器,的起步依賴,代碼如下在工程的配置文件下做以下的配置其中,為讀取的配置文件名,從數(shù)據(jù)庫(kù)中讀取,必須為。
轉(zhuǎn)載請(qǐng)標(biāo)明出處:
https://blog.csdn.net/forezp/...
本文出自方志朋的博客
Spring Cloud Config Server最常見是將配置文件放在本地或者遠(yuǎn)程Git倉(cāng)庫(kù),放在本地是將將所有的配置文件統(tǒng)一寫在Config Server工程目錄下,如果需要修改配置,需要重啟config server;放在Git倉(cāng)庫(kù),是將配置統(tǒng)一放在Git倉(cāng)庫(kù),可以利用Git倉(cāng)庫(kù)的版本控制。本文將介紹使用另外一種方式存放配置信息,即將配置存放在Mysql中。
整個(gè)流程:Config Sever暴露Http API接口,Config Client 通過(guò)調(diào)用Config Sever的Http API接口來(lái)讀取配置Config Server的配置信息,Config Server從數(shù)據(jù)中讀取具體的應(yīng)用的配置。流程圖如下:
案例實(shí)戰(zhàn)在本案例中需要由2個(gè)工程,分為config-server和config-client,其中config-server工程需要連接Mysql數(shù)據(jù)庫(kù),讀取配置;config-client則在啟動(dòng)的時(shí)候從config-server工程讀取。本案例Spring Cloud版本為Greenwich.RELEASE,Spring Boot版本為2.1.0.RELEASE。
工程 | 描述 |
---|---|
config-server | 端口8769,從數(shù)據(jù)庫(kù)中讀取配置 |
config-client | 端口8083,從config-server讀取配置 |
創(chuàng)建工程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讀取的配置文件名,從數(shù)據(jù)庫(kù)中讀取,必須為jdbc。spring.datasource配置了數(shù)據(jù)庫(kù)相關(guān)的信息,spring.cloud.config.label讀取的配置的分支,這個(gè)需要在數(shù)據(jù)庫(kù)中數(shù)據(jù)對(duì)應(yīng)。spring.cloud.config.server.jdbc.sql為查詢數(shù)據(jù)庫(kù)的sql語(yǔ)句,該語(yǔ)句的字段必須與數(shù)據(jù)庫(kù)的表字段一致。
在程序的啟動(dòng)文件ConfigServerApplication加上@EnableConfigServer注解,開啟ConfigServer的功能,代碼如下:
@SpringBootApplication @EnableConfigServer public class ConfigServerApplication { public static void main(String[] args) { SpringApplication.run(ConfigServerApplication.class, args); } }初始化數(shù)據(jù)庫(kù)
由于Config-server需要從數(shù)據(jù)庫(kù)中讀取,所以讀者需要先安裝MySQL數(shù)據(jù)庫(kù),安裝成功后,創(chuàng)建config-jdbc數(shù)據(jù)庫(kù),數(shù)據(jù)庫(kù)編碼為utf-8,然后在config-jdbc數(shù)據(jù)庫(kù)下,執(zhí)行以下的數(shù)據(jù)庫(kù)腳本:
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字段對(duì)應(yīng)于應(yīng)用名,profile對(duì)應(yīng)于環(huán)境,label對(duì)應(yīng)于讀取的分支,一般為master。
插入數(shù)據(jù)config-client 的2條數(shù)據(jù),包括server.port和foo兩個(gè)配置,具體數(shù)據(jù)庫(kù)腳本如下:
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
在程序的啟動(dòng)配置文件 bootstrap.yml做程序的相關(guān)配置,一定要是bootstrap.yml,不可以是application.yml,bootstrap.yml的讀取優(yōu)先級(jí)更高,配置如下:
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配置的是讀取配置失敗后,執(zhí)行快速失敗。spring.profiles.active配置的是spring讀取配置文件的環(huán)境。
在程序的啟動(dòng)文件ConfigClientApplication,寫一個(gè)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; } }
依次啟動(dòng)2個(gè)工程,其中config-client的啟動(dòng)端口為8083,這個(gè)是在數(shù)據(jù)庫(kù)中的,可見config-client從 config-server中讀取了配置。在瀏覽器上訪問(wèn)http://localhost:8083/foo,瀏覽器顯示bar-jdbc,這個(gè)是在數(shù)據(jù)庫(kù)中的,可見config-client從 config-server中讀取了配置。
參考資料https://cloud.spring.io/sprin...
源碼下載https://github.com/forezp/Spr...
掃一掃,支持下作者吧(轉(zhuǎn)載本站文章請(qǐng)注明作者和出處 方志朋的博客)
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/73362.html
摘要:,這是標(biāo)記配置文件集版本化的服務(wù)器端特性。要配置對(duì)稱密鑰,需要將設(shè)置為秘密字符串或使用環(huán)境變量將其排除在純文本配置文件之外。 Spring Cloud Config Server Spring Cloud Config Server為外部配置提供基于HTTP資源的API(名稱—值對(duì)或等效的YAML內(nèi)容),通過(guò)使用@EnableConfigServer注解,服務(wù)器可嵌入Spring Bo...
摘要:快速入門這個(gè)快速入門使用的服務(wù)器和客戶端。屬性在端點(diǎn)中顯示為高優(yōu)先級(jí)屬性源,如以下示例所示。名為的屬性源包含值為且具有最高優(yōu)先級(jí)的屬性。屬性源名稱中的是存儲(chǔ)庫(kù),而不是配置服務(wù)器。 Spring Cloud Config快速入門 這個(gè)快速入門使用Spring Cloud Config Server的服務(wù)器和客戶端。 首先,啟動(dòng)服務(wù)器,如下所示: $ cd spring-cloud-con...
摘要:概要什么是創(chuàng)建并運(yùn)行一個(gè)建立一個(gè)創(chuàng)建并運(yùn)行一個(gè)是什么什么是配置信息一個(gè)中不只是代碼還需要連接資源和其它應(yīng)用經(jīng)常有很多需要外部設(shè)置的項(xiàng)去調(diào)整行為如切換不同的數(shù)據(jù)庫(kù)國(guó)際化等應(yīng)用中的會(huì)經(jīng)常見到的等就是配置信息常見的實(shí)現(xiàn)信息配置的方法硬編碼缺點(diǎn)需要 概要 什么是Spring Cloud Config? 創(chuàng)建并運(yùn)行一個(gè)Spring Cloud Config Server 建立一個(gè)Reposit...
摘要:在這種情況下,名為的可選屬性非常有用,它是一個(gè)標(biāo)志,指示服務(wù)器是否應(yīng)從其自己的遠(yuǎn)程存儲(chǔ)庫(kù)配置自身,默認(rèn)情況下,該標(biāo)志處于關(guān)閉狀態(tài),因?yàn)樗赡軙?huì)延遲啟動(dòng)。 嵌入Config Server Config Server作為獨(dú)立應(yīng)用程序運(yùn)行最佳,但是,如果需要,你可以將其嵌入另一個(gè)應(yīng)用程序中,為此,請(qǐng)使用@EnableConfigServer注解。在這種情況下,名為spring.cloud.c...
摘要:默認(rèn)使用存儲(chǔ)配置內(nèi)容也可以使用本地文件系統(tǒng)或存儲(chǔ)配置。會(huì)在微服務(wù)啟動(dòng)時(shí),請(qǐng)求以獲取所需要的配置屬性,并且緩存在本地以提高性能。 簡(jiǎn)介 對(duì)于傳統(tǒng)的單體應(yīng)用,通常是使用配置文件來(lái)管理所有的配置,但是在微服務(wù)架構(gòu)中,會(huì)存在很多的微服務(wù),如果每一個(gè)微服務(wù)都維護(hù)自己的配置,顯然是非常的麻煩且不靈活,維護(hù)成本會(huì)非常高 使用Spring Cloud Config可以實(shí)現(xiàn)一下功能 集中管理配置 不同...
閱讀 3926·2021-11-24 09:38
閱讀 3107·2021-11-17 09:33
閱讀 3879·2021-11-10 11:48
閱讀 1246·2021-10-14 09:48
閱讀 3138·2019-08-30 13:14
閱讀 2557·2019-08-29 18:37
閱讀 3402·2019-08-29 12:38
閱讀 1423·2019-08-29 12:30