SpringCloud創建Config讀取本地配置


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的所有實例之間共享。

推薦在隔離路徑中的目錄選擇一種有意義的策略,
比如設置每個應用程序的子目錄或每種配置文件的子目錄。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM