4. 快速入门

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

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

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

服务器是 Spring Boot application,因此如果您愿意,可以从 IDE 中运行它(主 class 是ConfigServerApplication)。

接下来尝试一个 client,如下所示:

$ 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"}}
]}

定位 property 源的默认策略是克隆 git repository(在spring.cloud.config.server.git.uri)并使用它来初始化 mini SpringApplication。 mini-application 的Environment用于枚举 property 源并在 JSON 端点发布它们。

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

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

其中application作为SpringApplication注入SpringApplication(常规 Spring Boot 应用程序中通常application),profile是 active profile(或 comma-separated properties 列表),label是可选的 git 标签(默认为master .)

Spring Cloud Config Server 从 git repository(必须提供)中为 remote clients 提取 configuration,如下面的示例所示:

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

4.1 Client Side Usage

要在 application 中使用这些 features,您可以将其构建为依赖于 spring-cloud-config-client 的 Spring Boot application(对于 example,请参阅 config-client 或 sample application 的测试用例)。添加依赖项最方便的方法是使用 Spring Boot starter org.springframework.cloud:spring-cloud-starter-config。 Maven 用户还有 parent pom 和 BOM(spring-cloud-starter-parent),Gradle 和 Spring CLI 用户也有 Spring IO version management properties 文件。以下 example 显示了典型的 Maven configuration:

pom.xml.

<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 application,例如以下 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 服务器运行时,它会从 port 8888 上的默认本地配置服务器(如果它是 running)中获取外部 configuration。要修改启动行为,可以使用bootstrap.properties更改配置服务器的位置(类似于application.properties但是对于 application context 的 bootstrap 阶段,如下面的 example 所示:

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

引导 properties 在/env端点中显示为 high-priority property 源,如以下 example 所示。

$ 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> contains the foo property with a value of bar的 property 源,是最高优先级。

property source name 中的 URL 是 git repository,而不是配置服务器 URL。