共计 3328 个字符,预计需要花费 9 分钟才能阅读完成。
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:通用的抽象