SpringCloudConfig
爲微服務提供集中化的外部配置支持,爲各個不同的微服務應用配置提供了一種集中化的配置。
注意點:存儲在倉庫的 yml 文件一定要是 UTF-8 的格式
用來訪問 倉庫 的項目
添加的依賴:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-server</artifactId>
</dependency>
YML 配置
server:
port: 3345
spring:
application:
name: microservicecloud-config
cloud:
config:
server:
git:
uri: https://github.com/ChengCuo00/microservicecloud-config.git
# GitHub 上面的 git 倉庫
在主啓動類上面開啓 config 添加註解:
@EnableConfigServer
此時已經可以通過這個類去獲取 倉庫 中配置信息了
官網給出的讀取配置信息的 url 格式
/{application}/{profile}[/{label}]
http://config-3345.com:3345/application/dev/master
http://config-3345.com:3345/application/tes/master
http://config-3345.com:3345/application/xxx/master (不存在)
/{application}-{profile}.yml
http://config-3345.com:3345/application-dev.yml
http://config-3345.com:3345/application-test.yml
http://config-3345.com:3345/application-xxx.yml (不存在)
/{label}/{application}-{profile}.yml
http://config-3345.com:3345/master/application-dev.yml
http://config-3345.com:3345/master/application-test.yml
/{application}-{profile}.properties
/{label}/{application}-{profile}.properties
第一種和第三種可以指定讀取某個分支的配置信息
編寫存儲在 倉庫 裏面的配置文件 application.yml
spring:
profiles:
active:
- dev
---
spring:
profiles: dev
application:
name: microservicecloud-config-nianzuochen-dev
---
spring
profiles: test
application:
name: microservicecloud-config-nianzuochen-test
其中第一個文件中的信息是在查詢的開發環境不存在的時候返回的信息
# 僅僅 返回 profile 內容
spring:
profiles:
active:
- dev
其他的項目
其他項目都是通過上面的項目從倉庫中獲取對應的配置信息的
先假設該項目使用的配置文件如下:
spring:
profiles:
active:
- dev
---
server:
port: 8001
spring:
profiles: dev
application:
name: microservicecloud-config-dept-client
datasource:
url: jdbc:mysql://localhost:3306/cloudDB01?useUnicode=true&characterEncoding=UTF-8&useSSL=true
username: root
password: root
eureka:
client:
service-url:
defaultZone: http://eureka7001.com:7001/eureka/
instance:
instance-id: microservicecloud-dept-8001
prefer-ip-address: true
---
server:
port: 8001
spring:
profiles: test
application:
name: microservicecloud-config-dept-client
datasource:
url: jdbc:mysql://localhost:3306/cloudDB02?useUnicode=true&characterEncoding=UTF-8&useSSL=true
username: root
password: root
eureka:
client:
service-url:
defaultZone: http://eureka7001.com:7001/eureka/
instance:
instance-id: microservicecloud-dept-8001
prefer-ip-address: true
並上傳倉庫
創建配置文件 bootstrap.yml
spring:
cloud:
config:
# 意思是通過 http://config-3345.com:3345 獲取 master 分支下 microservicecloud-config-client 中的 test 環境的配置信息
name: microservicecloud-config-client
profile: test
label: master
uri: http://config-3345.com:3345
配置文件 application.yml 是用戶級別的資源配置項,而 bootstrap.yml 是系統級別的,優先級要更高。所以在導入 application.yml 的時候已經 通過 http://config-3345.com:3345 獲取了它指定的倉庫中的 master 分支下的名稱爲 microservicecloud-config-client 的配置文件的 test 環境的配置信息。
配置文件 application.yml
spring:
application:
name: microservicecloud-config-client
其他的項目都如此操作,就可以實現通過倉庫進行集中的修改配置文件,這個過程中如果所有的項目都添加了熱部署,那麼修改配置文件上傳倉庫之後可以達到實時更新無需重啓服務的效果。