查看: 307|回复: 0

[Java学习] Spring Cloud云架构 - Config客户端简介

发表于 2017-10-13 15:52:06
尚学堂AD
本帖最后由 shlrley 于 2017-10-13 15:55 编辑

Spring Cloud Config为分布式系统中的外部配置提供服务器和客户端支持。使用Config Server,您可以在所有环境中管理应用程序的外部属性。客户端和服务器上的概念映射与Spring Environment和PropertySource抽象相同,因此它们与Spring应用程序非常契合,但可以与任何以任何语言运行的应用程序一起使用。随着应用程序通过从开发人员到测试和生产的部署流程,您可以管理这些环境之间的配置,并确定应用程序具有迁移时需要运行的一切。服务器存储后端的默认实现使用git,因此它轻松支持标签版本的配置环境,以及可以访问用于管理内容的各种工具。可以轻松添加替代实现,并使用Spring配置将其插入。
快速开始
启动服务器:

$ cd spring-cloud-config-server$ ../mvnw spring-boot:run

该服务器是一个Spring Boot应用程序,所以你可以从IDE运行它,而不是喜欢(主类是ConfigServerApplication)。然后尝试一个客户端:

$ curl localhost:8888/foo/development{"name":"development","label":"master","propertySources":[  {"name":"https://github.com/scratches/config-repo/foo-development.properties","source":{"bar":"spam"}},  {"name":"https://github.com/scratches/config-repo/foo.properties","source":{"foo":"bar"}}]}

定位资源的默认策略是克隆一个git仓库(在spring.cloud.config.server.git.uri),并使用它来初始化一个迷你SpringApplication。迷你应用程序的Environment用于枚举属性源并通过JSON端点发布。

HTTP服务具有以下格式的资源:

/{application}/{profile}[/{label}]/{application}-{profile}.yml/{label}/{application}-{profile}.yml/{application}-{profile}.properties/{label}/{application}-{profile}.properties

其中“应用程序”作为SpringApplication中的spring.config.name注入(即常规Spring Boot应用程序中通常为“应用程序”),“配置文件”是活动配置文件(或逗号分隔列表)的属性),“label”是可选的git标签(默认为“master”)。

Spring Cloud Config服务器从git存储库中提取远程客户端的配置(必须提供):

spring:  cloud:    config:      server:        git:          uri:

客户端使用要在应用程序中使用这些功能,只需将其构建为依赖于spring-cloud-config-client的Spring Boot应用程序(例如,查看配置客户端或示例应用程序的测试用例)。添加依赖关系的最方便的方法是通过Spring Boot启动器org.springframework.cloud:spring-cloud-starter-config。还有一个Maven用户的父pom和BOM(spring-cloud-starter-parent)和用于Gradle和Spring CLI用户的Spring IO版本管理属性文件。示例Maven配置:

的pom.xml
   <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服务器:

@SpringBootApplication@RestControllerpublic 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,但是应用程序上下文的引导阶段)更改配置服务器的位置,例如

spring.cloud.config.uri:

引导属性将在/env端点中显示为高优先级属性源,例如

$ curl localhost:8080/env{  "profiles":[],  "configService::{"foo":"bar"},  "servletContextInitParams":{},  "systemProperties":{...},  ...}更多资料以及源码来源








回复

使用道具 举报