Spring Cloud Config 統一配置中心,方便維護配置文件,對一些公司對數據庫密碼等敏感的信息,對普通開發人員不公開,放在運維人員手上,對配置做一個隔離做用,另外項目線上的配置改動都要從新啓動項目,感受是有點繁瑣的,爲了解決以上問題及優化,下面來學習統一配置中心java
下面會使用到git倉庫mysql
config server 端git
新建一個服務configspring
啓動類上 加上eureka服務client註解,而且加上ConfigServer註解,套路都是同樣的sql
以上都是一些操做了又操做的東西,應該都比較熟悉的了數據庫
在配置yml文件以前,咱們須要先在git倉庫上建一個項目,這邊用碼雲作測試,建個項目,建立個文件應該都會,貼個圖,json
建立一個configs.yml文件,建立文件的時候,注意把.yml後綴加上,我就漏了…bootstrap
在configs.yml中,加入以前order服務的yml配置瀏覽器
server: port: 8083 spring: application: name: order datasource: driver-class-name: com.mysql.jdbc.Driver url: jdbc:mysql://localhost:3306/beginner?useSSL=false&characterEncoding=utf-8 username: root password: 123456 jpa: show-sql: true eureka: client: service-url: defaultZone: http://localhost:8761/eureka/ #此處爲product服務使用 PRODUCT: ribbon: NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule
git上面的內容放置好了,下面來配置config服務中yml文件,以下app
spring: application: name: config cloud: config: server: git: uri: https://gitee.com/daxia/spring-cloud-config username: daxia@foxmail.com password: 123456 basedir: E:\MyCloud\config\basedir ---會將git的配置拉去到此路徑下,不要寫成項目根路徑 eureka: client: service-url: defaultZone: http://localhost:8761/eureka
上面的git配置須要注意的是,若是是開源中國的git的話,就按上面寫,若是是gitlab、hub的話,後面要加上.git
啓動config服務(eureka服務中心是一直開啓的)
瀏覽器訪問localhost:8080/configs-a.yml就能讀取到git中的配合內容,很方便
configs-a.yml中-a是必須的,格式: /{服務名字}-{環境}.yml
下面要使用order服務作測試,因此這邊要複製一分內容,新建一份order-dev.yml文件,內容與configs.yml一致
config client 端
相對於config服務,其餘服務就是client端,這邊拿order服務做爲client
在order的maven中引入依賴,做爲config的client
org.springframework.cloud spring-cloud-config-client
統一配置了order服務yml,那麼order中的多餘的配置就不須要了,修改yml配置,
先改application.yml文件的名字爲bootstrap.yml,意思是啓動時,先加載bootstrap文件再加載統一配置中心的配置文件,好比:數據源應用找不到就報錯,內容以下:
spring: application: name: order cloud: config: discovery: enabled: true service-id: CONFIG profile: dev
而後啓動項目, 註冊中心就會發現服務:
再來瀏覽器訪問如下 http://localhost:8000/order-dev.yml
能夠訪問到配置,說明成功了
若是設置的註冊中心的端口不是默認的8761,須要將git倉庫中order-dev.yml中註冊中心的配置提到bootstrap.yml配置中
若是在git倉庫中配置了order-dev.yml,order-pro.yml,order.yml,在啓動服務的時候,讀取的配置會被合併,好比啓用order-dev的時候,會同時讀取order,這時候order做爲一個公共的存在; 有這樣的處理,就能夠想象一下,配置一個公共yml,其他的子yml的形式,用的很差,會引發一些尷尬的問題,須要注意
學習了統一配置中心,可是修改配置仍是須要重啓,下節學習結合SpringCloud Bus集合MQ實現自動刷新
------------------------------------------------------------