158. Spring Cloud Config

Spring Cloud GCP 可以将Google Runtime Configuration API用作Spring Cloud Config服务器来远程存储您的应用程序配置数据。

Spring Cloud GCP Config 支持通过其自己的 Spring Boot 启动器提供。它将 Google Runtime Configuration API 用作 Spring Boot 配置属性的来源。

Note

Google Cloud Runtime Configuration 服务处于 Beta 状态。

使用 Spring Cloud GCP BOM 进行 Maven 坐标:

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-gcp-starter-config</artifactId>
</dependency>

Gradle coordinates:

dependencies {
    compile group: 'org.springframework.cloud', name: 'spring-cloud-gcp-starter-config'
}

158.1 Configuration

以下参数可在 Spring Cloud GCP Config 中配置:

Name Description Required Default value
spring.cloud.gcp.config.enabled 启用配置 Client 端 No false
spring.cloud.gcp.config.name 您的申请名称 No spring.application.name属性的值。如果没有,则application
spring.cloud.gcp.config.profile Active profile No spring.profiles.active属性的值。如果不止一个配置文件,则选择最后一个
spring.cloud.gcp.config.timeout-millis 连接到 Google Runtime Configuration API 的超时时间(以毫秒为单位) No 60000
spring.cloud.gcp.config.project-id 托管 Google Runtime Configuration API 的 GCP 项目 ID No
spring.cloud.gcp.config.credentials.location OAuth2 凭据,用于通过 Google Runtime Configuration API 进行身份验证 No
spring.cloud.gcp.config.credentials.encoded-key Base64 编码的 OAuth2 凭据,用于通过 Google Runtime Configuration API 进行身份验证 No
spring.cloud.gcp.config.credentials.scopes OAuth2 scope用于 Spring Cloud GCP Config 凭据 No https://www.googleapis.com/auth/cloudruntimeconfig

Note

这些属性应在bootstrap.yml/bootstrap.properties文件中指定,而不是通常的applications.yml/application.properties

Note

Spring Cloud GCP 核心模块中所述的核心属性不适用于 Spring Cloud GCP Config。

158.2 快速Starter

为此,您应该安装Google Cloud SDK,拥有一个 Google Cloud Project 并运行以下命令:

gcloud init # if this is your first Google Cloud SDK run.
gcloud beta runtime-config configs create myapp_prod
gcloud beta runtime-config configs variables set myapp.queue-size 25 --config-name myapp_prod
spring.application.name=myapp
spring.profiles.active=prod
@Component
@ConfigurationProperties("myapp")
public class SampleConfig {

  private int queueSize;

  public int getQueueSize() {
    return this.queueSize;
  }

  public void setQueueSize(int queueSize) {
    this.queueSize = queueSize;
  }
}

当您的 Spring 应用程序启动时,上述SampleConfig bean 的queueSize字段值将设置为 25.

158.3 在运行时刷新配置

Spring Cloud提供支持以使配置参数可随/actuator/refresh端点的 POST 请求重新加载。

Maven coordinates:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

Gradle coordinates:

dependencies {
    compile group: 'org.springframework.boot', name: 'spring-boot-starter-actuator'
}
$ gcloud beta runtime-config configs variables set \
  myapp.queue_size 200 \
  --config-name myapp_prod
$ curl -XPOST http://myapp.host.com/actuator/refresh

158.4 Sample

sample applicationcodelab可用。

首页