spring cloud config-配置中心


         在咱們日常開發中,對於一些信息的配置加載一般都不會在代碼中寫死,而是通過一些配置動態加載。對於springcloud來說就是通過config來獲取配置中心的配置信息來實現的。那么怎么實現一個配置中心?

一、配置中心地址

        選擇一個配置中心地址,我這里選的得是github,新建一個項目,簡單配置即可。

       咱們一般開發都分三個環境:開發、測試、和線上環境。新建三個文件將相應配置添加就可以了。

 

 

文件內容就隨便了,比如我的:

 

 

二、服務端

       有了配置地址后就該獲取配置信息了。新建一個maven項目,作為config服務端,負責從配置地址讀取相應配置(這里配置地址為自己的github),建好之后導入向管依賴。

需要的依賴:

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

 

依賴添加完成后,創建一個啟動類,啟動類上需要添加一個注解: @EnableConfigServer

在resources文件里面,新建一個bootstrap.yml文件

bootstrap.yml填寫配置信息

spring:
  application:
    name: config-server
  cloud:
    config:
      server:
        git:
          uri: https://github.com/LISHENGDRUNK/config-repo-demo.git

 #配置git倉庫地址    search-paths: config-repo #git倉庫地址下的相對地址,可以配置多個,用,分割。
server:
  port: 12000

 

 

配置信息講解:

     Spring boot config也提供本地存儲配置的方式,我們只需要設置屬性spring.profiel.active=native,config server會默認從應用的src/main/resource目錄下檢索配置文件,也可以通過spring.cloud.config.server.native.searchLocations=file:E:/properties屬性來指定配置文件的位置。雖然spring cloud config提供了這樣的功能,但是為了支持更好的管理內容和版本控制,還是推薦使用github的方式。

啟動類

啟動類添加@EnableConfigServer,激活對配置中心的支持

@SpringBootApplication @EnableConfigServer public class ConfigServerApplication { public static void main(String[] args) { SpringApplication.run(ConfigServerApplication.class, args); } }

 

到此 Server 端相關配置已經完成。


測試

首先我們先要測試 Server 端是否可以讀取到 github 上面的配置信息,直接訪問 http://localhost:12000/config-client/dev 返回信息如下:

{
  "name": "config-client",
  "profiles": ["dev"],
  "label": null,
  "version": "4e3ca4b9e2bb96c9a0ba012f6c6e0b6cadc48f3e",
  "state": null,
  "propertySources": [
    {
      "name": "https://github.com/LISHENGDRUNK/config-repo-demo.git

",
      "source": {
        "info.profile": "dev-update"
      }
    }
  ]
}

 

      上述的返回的信息包含了配置文件的位置、版本、配置文件的名稱以及配置文件中的具體內容,說明 Server 端已經成功獲取了 Git 倉庫的配置信息。

     如果直接查看配置文件中的配置信息可訪問 http://localhost:12000/config-client-dev.yml 返回:\

 

neo:
holle: dev-update


四、客戶端
     修改配置文件config-client-dev.yml中配置信息為:dev holle, 再次在瀏覽器訪問 http://localhost:12000/config-client-dev.yml 返回:dev hello,說明 Server 端會自動讀取最新提交的內容。 

  在完成了上述驗證之后,確定配置服務中心已經正常運作,下面我們嘗試如何在微服務應用中獲取上述的配置信息。

再創建一個基礎的 Spring Boot 應用,命名為 config-client。

添加依賴

在 pom.xml 中添加下述依賴:

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

 

需要配置兩個配置文件,application.yml 和 bootstrap.yml,配置分別如下:配置文件

 

application.yml

spring:
  application:
    name: config-git
server:
  port: 13000

 

bootstrap.yml

pring:
  cloud:
    config:
      uri: http://localhost:12000 # 配置中心的具體地址,即 config-server
      name: config-client # 對應 {application} 部分
      profile: dev # 對應 {profile} 部分
      label: master # 對應 {label} 部分,即 Git 的分支(默認是master)。如果配置中心使用的是本地存儲,則該參數無用

 

特別注意:上面這些與 Spring Cloud Config 相關的屬性必須配置在 bootstrap.yml 中,config 部分內容才能被正確加載。因為 config 的相關配置會先於 application.yml,而 bootstrap.yml 的加載也是先於 application.yml。

啟動類

啟動類不用修改,只用@SpringBootApplication就行了

@SpringBootApplication public class SpringCloudConfigClientApplication { public static void main(String[] args) { SpringApplication.run(SpringCloudConfigClientApplication.class, args); } }

在 Controller 中使用@Value注解來獲取 Server 端參數的值

@RestController
public class HelloController {

    @Value("${neo.hello:error}")
    private String profile;

    @GetMapping("/info")
    public Mono<String> hello() {
        return Mono.justOrEmpty(profile);
    }
}

  

測試

       啟動項目后訪問 http://localhost:13000/info 返回dev說明已經正確的從 Server 端獲取到了參數。到此一個完整的服務端提供配置服務,客戶端獲取配置參數的例子就完成了。

       是不是很簡單呢,其實很多東西都是這樣。在我們還不了解他的時候他對我們是陌生的,當我們真的開始了解他的時候,他對我們來說其實就是那么簡單。當然對於我們程序員來說,代碼 看了千百遍不如敲十遍。只有多動手才是快速學習的最佳捷徑。

 

 


免責聲明!

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



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