Spring Cloud Config爲分佈式系統中的外部配置提供服務器和客戶端支持。使用Config Server,您能夠在全部環境中管理應用程序的外部屬性。客戶端和服務器上的概念映射與Spring Environment
和PropertySource
抽象相同,所以它們與Spring應用程序很是契合,但能夠與任何以任何語言運行的應用程序一塊兒使用。隨着應用程序經過從開發人員到測試和生產的部署流程,您能夠管理這些環境之間的配置,並肯定應用程序具備遷移時須要運行的一切。服務器存儲後端的默認實現使用git,所以它輕鬆支持標籤版本的配置環境,以及能夠訪問用於管理內容的各類工具。很容易添加替代實現,並使用Spring配置將其插入。html
要在應用程序中使用這些功能,只需將其構建爲依賴於spring-cloud-config-client的Spring引導應用程序(例如,查看配置客戶端或示例應用程序的測試用例)。添加依賴關係的最方便的方法是經過Spring Boot啓動器org.springframework.cloud:spring-cloud-starter-config
。還有一個Maven用戶的父pom和BOM(spring-cloud-starter-parent
)和用於Gradle和Spring CLI用戶的Spring IO版本管理屬性文件。示例Maven配置:git
的pom.xmlgithub
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.3.5.RELEASE</version> <relativePath /> <!-- lookup parent from repository --> </parent> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>Brixton.RELEASE</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-config</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> <!-- repositories also needed for snapshots and milestones -->
那麼你能夠建立一個標準的Spring Boot應用程序,像這個簡單的HTTP服務器:spring
@SpringBootApplication @RestController public class Application { @RequestMapping("/") public String home() { return "Hello World!"; } public static void main(String[] args) { SpringApplication.run(Application.class, args); } }
當它運行它將從端口8888上的默認本地配置服務器接收外部配置,若是它正在運行。要修改啓動行爲,您能夠使用bootstrap.properties
(如application.properties
)更改配置服務器的位置,但用於應用程序上下文的引導階段),例如bootstrap
spring.cloud.config.uri: http://myconfigserver.com
引導屬性將在/env
端點中顯示爲高優先級屬性源,例如後端
$ curl localhost:8080/env { "profiles":[], "configService:https://github.com/spring-cloud-samples/config-repo/bar.properties":{"foo":"bar"}, "servletContextInitParams":{}, "systemProperties":{...}, ... }
(名爲「configService:<遠程存儲庫的URL> / <文件名>」的屬性源包含值爲「bar」的屬性「foo」,是最高優先級)。注意:屬性源名稱中的URL是git存儲庫,而不是配置服務器URL。源碼來源服務器