對於單體應用架構來講,會使用配置文件管理咱們的配置,這就是以前項目中的application.properties或application.yml。若是須要在多環境下使用,傳統的作法是複製這些文件命名爲application-xxx.properties,而且在啓動時配置spring.profiles.active={profile}來指定環境。java
在微服務架構下咱們可能會有不少的微服務,因此要求的不僅是在各自微服務中進行配置,咱們須要將全部的配置放在統一平臺上進行操做,不一樣的環境進行不一樣的配置,運行期間動態調整參數等等。總之一句話,使用集中管理配置是頗有必要的。git
源碼github
所有SpringCloud教程spring
可基於以前SpringCloudDemo項目改造,也能夠建立爲新的項目bootstrap
1、在GitHub建立一個git倉庫用來存放git配置安全
{application}-{profile}.properties並將配置項粘貼到新建的文件中,如:建立zuul-dev.properties,並將原來的zuul模塊中的application.properties所有配置粘貼進來
2、 建立config server端服務器
建立maven項目,可在原項目中建立Module架構
引入pom依賴app
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-config-server</artifactId> </dependency>
建立啓動類maven
package cn.kxtop.blog.configserver; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.client.discovery.EnableDiscoveryClient; import org.springframework.cloud.config.server.EnableConfigServer; // 注入到Eureka中,使高可用 @EnableDiscoveryClient @SpringBootApplication @EnableConfigServer public class ConfigServerApplication { public static void main(String[] args) { SpringApplication.run(ConfigServerApplication.class); } }
配置配置文件application.properties
server.port=9999 # 配置git倉庫的地址(修改成你本身的git倉庫地址) spring.cloud.config.server.git.uri=https://github.com/qupengkun/spring-cloud-config-repo.git # git倉庫帳號 spring.cloud.config.server.git.username=YOU_NAME # git倉庫祕密 spring.cloud.config.server.git.password=YOU_PASSWORD #eureka,確保Spring cloud config 高可用 eureka.client.serviceUrl.defaultZone = http://localhost:8761/eureka/
啓動項目並訪問測試
http請求localhost:9999/zuul/dev
3、建立config client端
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-config-client</artifactId> </dependency>
#對應以前git倉庫的文件名,如zuul-dev.properties spring.application.name=zuul #config server 地址 spring.cloud.config.uri=http://localhost:9999 #{profile}名(環境) spring.cloud.config.profile=dev #{label}名,git倉庫分支 spring.cloud.config.label=master
以上基本演示了Spring Cloud Config的用法,仍是比較簡單的,咱們引入了Eureka使Config Server能保證高可用,還能夠增長@RefreshScope手動刷新配置文件,若是配置對安全要求較高,也能夠引入JCE(Java Cryptography Extension)進行加解密操做。
其實每次都去手動刷新配置仍是比較麻煩且有很大的侷限性的,那麼如何修改配置後自動感知並刷新呢?請關注下一章基於Spring Cloud Bus實現自動刷新配置。
持續學習,記錄點滴。更多文章請訪問 文章首發