当前位置: > > > 分布式配置中心Spring Cloud Config使用详解3(Git配置详解)

分布式配置中心Spring Cloud Config使用详解3(Git配置详解)

三、Git 配置详解

1,占位符配置 URI

(1){application}{profile}{label} 这些占位符除了用于标识配置文件的规则之外,还可以用于 Config Server 中对 Git 仓库地址的 URI 配置。我们可通过 {application} 占位符来实现一个应用对应一个 Git 仓库目录的配置效果。
  • 比如下面配置 {application} 代表了应用名,当客户端应用向 Config Server 发起获取配置的请求时,Config Server 会根据客户端的 spring.application.name 信息来填充 {application} 占位符以定位配置资源的存储位置,从而实现根据微服务应用的属性动态获取不同位置的配置。
spring.cloud.config.server.git.uri=https://gitee.com/hangge/{application}
spring.cloud.config.server.git.username=
spring.cloud.config.server.git.password=

(2)通过在 URI 中使用占位符可以帮助我们规划和实现通用的仓库配置。比如:
  • 通常我们会使用服务名称作为 Git 代码仓库地址,比如会员服务的代码库为 https://gitee.com/hangge/member-service
  • 而使用服务名加上 -config 后缀作为对应 Git 配置仓库名称,比如上面会员服对应的配置库地址为 https://gitee.com/hangge/member-service-config
  • 我们就可以通过如下配置来同时匹配多个不同服务的配置仓库。
spring.cloud.config.server.git.uri=https://gitee.com/hangge/{application}-config

2,配置多个仓库

    Config Server 还支持通过带有通配符的表达式来匹配仓库,以实现更为复杂的配置需求。并且当我们有多个匹配规则时,还可以用逗号拉分隔多个{application}/{profile} 配置规则,下面是一个简单的样例:
(1)首先通过 spring.cloud.config.server.git.uri 属性指定了一个默认的仓库位置,当使用 {application}/{profile} 模式未能匹配到合适的仓库时,就将在该默认仓库位置下获取配置信息。
(2)除了默认仓库外,还配置了另外三个仓库:
  • dev 仓库匹配 dev/* 的模式,所以无论 profile 是什么,它都能匹配 application 名称为 dev 的应用。同时该仓库存储的配置文件采用的是 git 本地仓库的内容。
  • test 仓库未配置匹配规则,所以它只匹配 applcaiton 名为 test 的应用。
  • prod 仓库则需要匹配,application prod 并且 profile pp 开头,或者 applicationonline 并且 profile oo 开头的环境和应用。
(3)注意:当配置多个仓库时,Config Server 在启动时会直接克隆第一个仓库的配置库,其他的配置库只有在请求时才会克隆到本地,所以对于仓库的排列可以根据配置内容的重要程度有所区分。另外,如果表达式是以通配符开始的,那么需要使用引号将配置内容引起来。
#指定默认仓库位置
spring.cloud.config.server.git.uri=https://gitee.com/hangge/config-repo

#指定dev仓库位置
spring.cloud.config.server.git.repos.dev.pattern=dev/*
spring.cloud.config.server.git.repos.dev.uri=file://Users/hangge/config-repo

#指定test仓库位置
spring.cloud.config.server.git.repos.test=https://gitee.com/test/config-repo

#指定prod仓库位置
spring.cloud.config.server.git.repos.prod.pattern=prod/pp*,online/oo*
spring.cloud.config.server.git.repos.prod.uri=https://gitee.com/prod/config-repo

3,子目录存储

(1)从之前的文章样例中我们知道通过 spring.cloud.config.server.git.search-paths 参数配置可以将配置文件定位到 Git 仓库的子目录:
spring.cloud.config.server.git.uri=https://gitee.com/hangge/hangge.com
spring.cloud.config.server.git.search-paths=config-repo

(2)对于 spring.cloud.config.server.git.search-paths 参数的配置也支持使用 {application}{profile}{label} 占位符。
  • 比如下面配置我们可以实现在 https://gitee.com/hangge/hangge.com 仓库中,一个应用一个目录的效果:
spring.cloud.config.server.git.uri=https://gitee.com/hangge/hangge.com
spring.cloud.config.server.git.search-paths={application}
评论0