SpringCloud Config Server中{application}等占位符使用場景設置默認拉去分支


Spring Cloud Config服務器支持一個Git倉庫URL,其中包含{application}和{profile}(以及{label})的占位符。

1.各個占位符所代表的含義

  • application: 表示微服務名稱,即配置的spring.application.name
  • profile: 表示當前的環境,local、feature、dev、test、prod
  • label: 表示git倉庫分支,feature、develop、test、master,當然默認的話是master

記住,這三個標簽是占位符(先占住一個固定的位置,等着你再往里面添加內容的符號)在Spring Cloud Config中的應用場景如下:

2.占位符請求配置文件的形式

在啟動Config Server后去請求獲取Git Repo中的配置文件時有以下幾種請求形式。

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

3.示例講解

如你的配置文件的名字叫abc-config-server-dev.yml,application(微服務名稱)是abc-config-server,profile(環境)是dev。
那么我們可以通過以下的請求地址去獲取配置資源

  • http://localhost:8888/abc-config-server/dev #不顯示配置默認label的話,默認獲取master分支上的abc-config-server-dev.yml
  • http://localhost:8888/abc-config-server/dev/develop #獲取develop分支上的abc-config-server-dev.yml資源
  • http://localhost:8888/abc-config-server-dev.yml #直接獲取abc-config-server-dev.yml資源(返回信息只有配置文件內的信息沒有多余的Git信息)
  • http://localhost:8888/develop/abc-config-server-dev.yml #獲取develop分支上的abc-config-server-dev.yml資源

4.占位符在配置文件中使用場景:

一、利用application去占位git uri )輕松支持“每個應用程序的一個repo”策略。

spring:
  cloud:
    config:
      server:
        git:
          uri: https://github.com/lingyejun/{application} 

如我們從http://localhost:8888/abc-config-server/dev去獲取的話,那么會將application自動占位為abc-config-server,即去https://github.com/lingyejun/abc-config-server這個倉庫的根目錄下找abc-config-server-dev.yml資源

二、利用占位符去當前倉庫根目錄下找配置文件,找不到則去占位符對應的目錄下找 

spring:
  application:
    name: config-server-demo
  cloud:
    config:
      server:
        git:
          uri: https://github.com/lingyejun/{application}
          username: lingyejun
          password: password
          repos:
            abc-client:
              pattern: abc* #對application name的模式匹配
              uri: https://github.com/lingyejun/configserver
              username: lingyejun
              password: password
              search-paths: '{application}' #注意:這里要加引號不然會因為yml格式不合法而導致配置不生效
              clone-on-start: true #啟動時自動clone
              default-label: develop #設置默認分支

 

我們請求http://localhost:8888/abc-config-server/dev,application為abc-config-server匹配到abc-config-server的pattern模式,然后去https://github.com/lingyejun/configserver的develop分支拉取abc-config-server-dev.yml文件,如果在根目錄下找不到的話則會去abc-config-server文件夾在去找。
注意:search-paths: '{application}'這里要加引號不然會因為yml格式不合法而導致配置不生效。

5.設置默認分支default-lable不生效的問題?

之前用.properties文件配置默認分支

spring.cloud.config.server.git.uri=https://github.com/lingyejun/configserver
spring.cloud.config.server.git.username=lingyejun
spring.cloud.config.server.git.password=password
spring.cloud.config.server.git.default-label=develop
spring.cloud.config.server.git.search-paths=abc-config-server

spring.cloud.config.server.git.default-label=develop 用這個屬性是可以的,可以將默認分支更改為develop,但是換成.yml格式的后就不生效了

spring:
  application:
    name: config-server-demo
  cloud:
    config:
      server:
        git:
          uri: https://github.com/lingyejun/{application}
          username: lingyejun
          password: password
          default-label: develop
          search-paths: abc-config-server

真的不生效了,什么仇什么怨!

經過我百般嘗試之后發現將這個標簽放到repo標簽下就是生效的

spring:
  application:
    name: config-server-demo
  cloud:
    config:
      server:
        git:
          uri: https://github.com/lingyejun/{application}
          username: lingyejun
          password: password
          search-paths: abc-config-server
          repos:
            phihome-client: 
              pattern: abc* 
              uri: https://github.com/lingyejun/{application}
              username: lingyejun
          	  password: password
          	  default-label: develop #放在這里就是OK的
          	  search-paths: '{application}'

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM