QA:根據上一篇文章客戶端已經可以獲取到遠程倉庫的文件信息,此時我們修改遠程倉庫的配置文件信息,項目是否能獲取到呢?
- 服務端請求遠程倉庫獲取到最新的文件信息
- 客戶端請求服務端獲取的還是之前的歷史信息
原因:客戶端項目處於運行狀態時獲取的信息無法直接加載到正在運行的spring環境中。
此時我們將客戶端服務重新啓動就可以獲取最新的配置信息。但這又存在一個嚴重的問題:沒有實現熱部署加載,我們希望替換完遠程倉庫的配置文件後系統可以實現熱部署加載替換運行環境中原有的配置文件的內容而不是需要我們重新啓動服務,在海量的微服務項目中將所有項目重啓一遍也是一個很大的工作量 o(╥﹏╥)o 此時我們需要實現客戶端的熱加載操作。
1、添加maven依賴。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
2、添加yml配置
management:
endpoints:
web:
exposure:
#yml加雙引號,properties不用加
include: "*"
3、在項目中需要獲取配置文件信息的類上添加@RefreshScope註解
在我們想要加載最新的遠程倉庫文件到當前服務中時調用一個請求:
http://ip:port/actuator/refresh Post請求
調用該方法項目會去請求configSever獲取到遠程倉庫文件的最新信息並加載到運行環境中。
PS:加載的時候當前服務是不可用的因爲服務會重新編譯文件和運行環境中的信息。