2

Spring Cloud Config快速入门

这个快速入门使用Spring Cloud Config Server的服务器和客户端。

首先,启动服务器,如下所示:

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

服务器是一个Spring Boot应用程序,因此如果你愿意,可以从IDE运行它(主类是ConfigServerApplication)。

接下来尝试一个客户端,如下所示:

$ curl localhost:8888/foo/development
{"name":"foo","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

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

Spring Cloud Config Server从git存储库(必须提供)中提取远程客户端的配置,如以下示例所示:

spring:
  cloud:
    config:
      server:
        git:
          uri: https://github.com/spring-cloud-samples/config-repo

客户端使用

要在应用程序中使用这些功能,你可以将其构建为依赖于spring-cloud-config-client的Spring Boot应用程序(例如,请参阅config-client或示例应用程序的测试用例)。添加依赖项最方便的方法是使用Spring Boot启动器org.springframework.cloud:spring-cloud-starter-config,还有一个用于Maven用户的父pom和BOM(spring-cloud-starter-parent)以及一个用于Gradle和Spring CLI用户的Spring IO版本管理属性文件,以下示例显示了典型的Maven配置:

<parent>
       <groupId>org.springframework.boot</groupId>
       <artifactId>spring-boot-starter-parent</artifactId>
       <version>{spring-boot-docs-version}</version>
       <relativePath /> <!-- lookup parent from repository -->
   </parent>

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>{spring-cloud-version}</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
@RestController
public class Application {

    @RequestMapping("/")
    public String home() {
        return "Hello World!";
    }

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }

}

当此HTTP服务器运行时,它从端口8888上的默认本地配置服务器(如果它正在运行)中获取外部配置,要修改启动行为,可以使用bootstrap.properties更改配置服务器的位置(类似于application.properties但适用于应用程序上下文的bootstrap阶段),如以下示例所示:

spring.cloud.config.uri: http://myconfigserver.com

默认情况下,如果未设置应用程序名称,则将使用application,要修改名称,可以将以下属性添加到bootstrap.properties文件中:

spring.application.name: myapp
设置属性${spring.application.name}时,不要在应用程序名称前加上保留字application-,以防止解析正确属性源的问题。

bootstrap属性在/env端点中显示为高优先级属性源,如以下示例所示。

$ curl localhost:8080/env
{
  "profiles":[],
  "configService:https://github.com/spring-cloud-samples/config-repo/bar.properties":{"foo":"bar"},
  "servletContextInitParams":{},
  "systemProperties":{...},
  ...
}

名为configService:<URL of remote repository>/<file name>的属性源包含值为bar且具有最高优先级的foo属性。

属性源名称中的URL是git存储库,而不是配置服务器URL。

上一篇:Spring Cloud Commons:通用的抽象
下一篇:Spring Cloud Config Server

博弈
2.5k 声望1.5k 粉丝

态度决定一切