分佈式配置中心客戶端的作用是從github 或者 是 gitlab上加載配置 而不自己手動配置
在某個服務的pom.xml中加入spring-cloud-config客戶端依賴(每個服務都可使用,這裏以feign消費者爲例)
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
先給feign的application.yml 配置 cloud-config
feign服務的原始application.yml
spring:
application:
name: hello-spring-cloud-web-admin-feign
thymeleaf:
cache: false
mode: LEGACYHTML5
encoding: UTF-8
servlet:
content-type: text/html
cloud: //雲配置
config:
uri: http://localhost:8888
name: web-admin-feign //對應gitlab倉庫中master分支下的
web-admin-feign-dev.yml文件
label: master
profile: dev
server:
port: 8765
eureka:
client:
serviceUrl:
defaultZone: http://localhost:8761/eureka/
feign服務簡化後的application.yml
spring:
cloud: //雲配置
config:
uri: http://localhost:8888
name: web-admin-feign //對應gitlab倉庫中master分支下的
web-admin-feign-dev.yml文件
label: master
profile: dev
因爲配置文件全都託管在github或者gitlab平臺上,所以只需加載到對應的配置文件,而無需在此文件中配置大多數信息
spring.cloud.config.uri
:配置服務中心的網址spring.cloud.config.name
:配置文件名稱的前綴spring.cloud.config.label
:配置倉庫的分支spring.cloud.config.profile
:配置文件的環境標識- dev:表示開發環境
- test:表示測試環境
- prod:表示生產環境
你們可能會問這裏的feign服務在run入口類時能夠加載到gitlab後者github上對應的配置文件?
從上面feign的application.yml中可以看出spring.cloud.config.uri 爲 http://localhost:8888
而http://localhost:8888正是spring-cloud-config配置中心
那我們再來看看spring-cloud-config配置中心中的application.yml又配置了什麼
spring-cloud-config模塊(配置中心)
spring:
application:
name: hello-spring-cloud-config
cloud:
config:
label: master
server:
git:
uri: http://192.168.106.133/EinBlatt/spring-cloud-config.git
search-paths: respo
username: einblatt
password: einblatt
server:
port: 8888
eureka:
client:
serviceUrl:
defaultZone: http://localhost:8761/eureka/
這下明白了吧,每個服務通過spring.cloud.config.uri屬性找到配置中心
配置文件的環境標識-springboot profile
而配置中心中配置了連接同一管理配置文件的github或者gitlab倉庫的地址
所有的服務的配置文件可以託管在這(這就是配置文件在雲上)
在feign服務的application.yml配置文件中又指定了配置文件名和Pprofile()
所以在不同的環境下可以加載到不同的配置文件
如果項目上線了直接將feign服務的applicaition.yml中的spring.cloud.config.profile改成prod
這時feign項目就會自動加載你配置的好的web-admin-feign-prod.yml 這樣無需關注你feign服務的application.yml
的其他配置信息像eureka的url等等,只需更新github上或者gitlab上的配置文件,並且找到此對應的配置文件即可,是不
是就是雲配置了
但其實這並非是真正的配置上雲了,你想一般每個小的服務都會用maven打成jar包的形式運行(假如在windows上,先不說 linux),假如之前你是開發環境,用的配置文件是web-admin-feign-dev.yml,這時項目要上線了,然而你已經打包好了jar,
你這時又的去改改你項目的application.yml中的spring.cloud.config.profile爲prod,再次打成jar然後再運行,是不是很
麻煩,那麼如何解決這個問題呢,自古上有計策下有對策嘛
操作起來很簡單,只需要爲不同的環境編寫專門的配置文件,如:web-admin-feign-dev.yml
、web-admin-feign-prod.yml
, 啓動項目 時只需要增加一個命令參數 --spring.profiles.active=環境配置
即可,啓動命令如下:在項目 mvn clean package後
這樣運行項目
如果你是開發環境在cmd運行;
java -jar hello-spring-cloud-web-admin-feign-1.0.0-SNAPSHOT.jar --spring.profiles.active=dev
如果你是上線環境在cmd運行;
java -jar hello-spring-cloud-web-admin-feign-1.0.0-SNAPSHOT.jar --spring.profiles.active=prod