1.說明
Config Server獲取配置支持的方式很多,
包括Git倉庫(github/gitee等),任何與JDBC兼容的數據庫,
Subversion,Hashicorp Vault,Credhub和本地文件系統。
Git倉庫方式請參考:
SpringCloud創建Config模塊
本文介紹使用本地配置的方式,
包括本地類路徑和文件系統來獲取配置。
2.Git方式
Git方式中uri使用https協議:
spring:
application:
name: config-server
cloud:
config:
server:
git:
uri: https://gitee.com/bugzeroman/spring-cloud-config.git
或者Git方式中uri使用git協議:
spring:
application:
name: config-server
cloud:
config:
server:
git:
uri: git@gitee.com:bugzeroman/spring-cloud-config.git
strictHostKeyChecking: false
privateKey: |
-----BEGIN RSA PRIVATE KEY-----
MIIEowIBAAKCAQEAuThLh+LHK0g7g/dJ4IUCyOYg7JNXQDGYt4khUYnJIw5pxX/a
... please input real id_rsa ...
UZp40gCDS64ve++Z/leNTMYH0YiAxNkcIp2Czvwm8P+hCkxvdgWgkbb5nuXfR1Gp
2OrvwOk/z076Wo3kTl0Oh+Tt9EB7bf1h2MC23QrRXUim8r0+Vjl3
-----END RSA PRIVATE KEY-----
3.本地配置方式
本地配置方式包括本地類路徑和文件系統兩種方式,
要使用本地配置方式,
首先設置spring.profiles.active為native,
然后spring.cloud.config.server.native.searchLocations指向任何靜態的URL,
這樣Config Server啟動時,
才能加載到對應的配置文件。
4.本地類路徑方式
通過在search-locations中指定classpath下的路徑:
spring:
application:
name: config-server
profiles:
active: native
cloud:
config:
server:
native:
search-locations: classpath:/config-server/gitee
5.本地文件系統方式
通過在search-locations中指定file協議的本地路徑:
spring:
application:
name: config-server
profiles:
active: native
cloud:
config:
server:
native:
search-locations: file:///D:/spring-cloud-demo/config-server/src/main/resources/config-server/gitee
需要注意的是Windows中的絕對路徑需要額外的/:
file:///${user.home}/config-repo
而且額外的/是需要轉義的,所有上面有3個/;
在Lunix環境下,只需要1個/即可:
file:/${user.home}/config-repo
6.啟動測試
Config Server啟動后,
訪問http://localhost:9009/config-client-dev.yml:
server:
port: 8004
spring:
application:
name: config-client-dev
config:
info: config info dev
如果添加label,
訪問http://localhost:9009/master/config-client-dev.yml,
同樣能返回上面的結果。
因為會將HTTP資源的{label}參數附加到搜索路徑上的后綴,
從搜索位置下與該名稱相同的子目錄查找屬性文件,
然而現在config-client-dev.yml在根目錄,
直接可以訪問到,
{label}沒有任何對應的子目錄,
所以{label}不管修改為任何值,
都只能返回上面的結果。
7.更多說明
searchLocations的默認值與本地Spring Boot應用程序相同,
即[classpath:/, classpath:/config, file:./, file:./config]。
這不會將application.properties從服務器公開給所有客戶端,
因為服務器中存在的所有屬性源在被發送到客戶端之前都已被刪除。
本地配置方式非常適合快速入門和測試,
但是要在生產環境中使用它,
需要確保文件系統可靠並且可以在Config Server的所有實例之間共享。
推薦在隔離路徑中的目錄選擇一種有意義的策略,
比如設置每個應用程序的子目錄或每種配置文件的子目錄。