如何使用Spring Config Server

咱們將使用Spring Cloud Config包爲咱們的應用程序進行遠程配置。java

咱們的程序能夠將您的設置移動到外部,以便咱們的應用程序能夠輕鬆配置,甚至能夠更改其設置。git

這被普遍用於微服務中。能夠在不一樣的容器中屢次啓動相同的服務或應用程序,而且有一箇中心位置能夠讀取這些服務的設置。github

爲此,咱們將建立一個配置服務器和一個讀取該服務器配置的客戶端。配置服務器在GitHub上使用GIT存儲庫,咱們存儲配置文件。web

申請數據以下:spring

配置服務器
項目:config-server
港口:8888
Spring名稱:config-server
GIT服務器:https://github.com/chuchip/servercloudconfig.gitbootstrap

配置客戶端
項目:config-client
港口:8080
Spring名稱:config-client後端

1.配置服務器
您只能在Maven項目中包含此依賴項。
1.png服務器

Spring Starter的名稱是Config Server:
2.pngapp

服務器配置由單個類組成,詳細信息以下:
3.png函數

以下所示,這裏惟一要強調的是標籤  @EnableConfigServer。
在application.properties文件中,它  應該是 參數:spring.cloud.config.server.git.uri:
4.png

在這種狀況下,咱們使用GitHub上託管的服務器Git。咱們還能夠指定使用GITlocally存儲庫,以下所示:
5.png

Spring Cloud支持的配置服務器是如下後端:
GIT
Vault
JDBC
這些其實能夠混合使用,這取決於所選擇的配置文件。
對於在示例中使用的GIT服務器,重要的是擁有一個文件,其中包含請求數據的客戶端的名稱。該文件具備後綴  .properties。
 所以,若是咱們想要一個名爲config-client的客戶端應用程序的設置,也就是說變量spring.application.name 等於  config-client,咱們必須有一個名爲config-client.properties. 的文件。該文件的內容將是:
6.png

請注意,可使: 或者= 。
除非您但願咱們的字符串包含這些引號,不然請勿使用引號來分隔文字。
要查看客戶端的值,咱們將發出一個GET請求,指定客戶端名稱和配置文件。

7.png

在這種狀況下,若是您未指定任何配置config-client文件,咱們會要求您提供客戶端配置和配置default文件。
要查看配置文件的設置production, 您能夠調用URL:HTTP:// localhost:8888 / config-client / production,它顯示如下輸出:

8.png

這表示文件內容 config-client-production.properties,而後顯示文件內容 的config-client.properties。
所以,若是所需的配置文件中存在變量,則將返回該值。不然,它默認狀況下在配置文件中查找  ,返回指定的值(若是有的話)。
客戶端設置
一旦咱們的配置服務器工做,咱們將建立客戶端。
咱們將此dependency項添加到Maven文件中:

9.png

使用Spring Initializr將添加Config Client依賴項。此外,要刷新熱配置,請添加啓動器執行器。
如今,咱們將應用程序配置爲指定偵聽配置服務器的位置。首先,咱們將經過bootstrap.properties更改文件config.properties的名稱。所以,Spring Boot知道要查找服務器配置。
在此文件中,咱們添加了spring.cloud.config.uri, 指定服務器配置URL 的屬性。

10.png

咱們還創建了屬性management.endpoints.web.exposure.include來refresh配置包執行程序,以便您能夠訪問URL:  http://localhost:8080/actuator/refresh 這將強制咱們刷新配置。
請記住,該變量spring.application.name設置應用程序名稱,並指示GIT存儲庫中尋找設置的文件的名稱。
使用變量  spring.profiles.active,咱們指出將使用哪一個配置文件。若是咱們不聽任何註釋行,使用的配置文件將是默認配置文件。
在此示例中,我使用了幾種方法來讀取配置。
1.建立包含標籤的組件   @ConfigurationProperties 
在這個最簡單的方法中,咱們指出哪一個是要讀取的屬性的根,而後定義Spring應該填充的變量。
在類中,configuration.java, 咱們指定咱們要配置以limites開頭的變量。

11.png

所以,變量dato1將具備指定的值limites.dato1.
若是  limites.dato1的值不能傳遞給整數,咱們的應用程序就會失敗; 可是,若是您沒有找到該值,只需在不給出任何錯誤的狀況下填寫它。
該組件將經過標籤注入  @Autowired。 

12.png

2.使用註釋建立變量 @Value
所以,這也會將讀取服務器配置的值。最大的區別是該值將被固定,由於它將被分配用於運行應用程序而且永遠不會刷新。

13.png

變量valorFijo將在行上分配值:valores.valor_fijo.
3.使用@Value 函數參數中的條目
一樣,從服務器配置讀取該值,其優勢是能夠刷新該值。

14.png

運做
在咱們的示例中,公開URL /limites,refrescado,和datos。
調用  limites返回此輸出:

15.png

若是咱們更改文件  <u>config-client.properties</u>並在咱們的GIT存儲庫服務器中進行推送和提交這樣的值,對此URL的連續調用將顯示舊數據,由於客戶端只讀取該星形的配置,除非你強迫他刷新數據。

想象一下,咱們更改'config-client.properties'文件,以便咱們如今擁有如下值:

16.png

作相應的提交和推送:
17.png

當您使用POST類型請求調用URL http:// localhost:8080 / actuator / refresh時,  Spring會強制它們調用服務器配置並刷新值。

18.png

如圖所示,此請求的輸出返回刷新的變量。
如今,若是咱們調用 http://localhost: 8080/limits,咱們會看到這一點的價值  minResuados ,並  maxResultados  已經改變。然而,不管是  valorFijo 或  valorFuncion 已經改變。
若是咱們調用URL http:// localhost:8080 / refrescado  並看到變量  valorFuncion 已更新,則調用將放在標籤上,  @Value 以便在那時讀取變量。可是,變量  valorFijo 不會在程序開頭時更改,其值保持不變。

本人創業團隊產品MadPecker,主要作BUG管理、測試管理、應用分發,有須要的朋友歡迎試用、體驗!本文爲MadPecker團隊產品經理譯製,轉載請標明出處

相關文章
相關標籤/搜索