spring 云配置最佳实践?

spring cloud config best practice?

对于基于spring的项目,例如有eureka config(eureka.properties)、zuul config(zuul.properties)、feign config(feign.properties)等..

还有开发、测试、登台等多种环境,如application-dev.properties、application-prod.properties。

将spring云配置引入项目后,我们可以将所有配置文件保存到git repo,但是如何组织好这些配置文件呢?并最小化 spring 云客户端项目的配置?

看来我一开始误解了spring云配置,documentation

The HTTP service has resources in the form:

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

where the "application" is injected as the spring.config.name in the > SpringApplication (i.e. what is normally "application" in a regular Spring Boot > app), "profile" is an active profile (or comma-separated list of properties), and > "label" is an optional git label (defaults to "master".)

使用 spring 云配置内置机制,spring 云配置会将所有属性公开为 REST 资源,因此:

  • application 是 spring 引导客户端项目 spring.application.name
  • profile 是 spring 引导客户端项目中的 spring.profiles.active
  • label 是 git 分支名称,其中 git git repo 由 spring 云配置服务器指定,例如spring.cloud.config.server.git.uri

然后客户端可以GET所有属性违反上述规则。

通常对于 spring 引导客户端项目,只需要像这样配置 spring 云配置服务器:

spring:
  application:
    name: eureka
  cloud:
    config: 
      uri: http://localhost:8888
  profiles:
    active: dev, prod

因此客户端将GET spring 云配置服务器中的所有属性:eureka-dev.ymleureka-prod.yml