6、如何獲取配置中心的配置


如何獲取配置中心的配置

在《配置中心》這一篇博文里學習了如何git獲取配置文件。大概的流程可以用下圖來概括。

 

 

《配置中心》這篇博文說的是Config Server,本篇將和大家看看如何編寫一個Config Client從Config Server獲取配置。

1、先在倉庫中創建如下配置文件(具體參考下面地址)

https://gitee.com/hjj520/spring-cloud-2.x/tree/master/config-repos/sc-config-client

2、創建maven項目sc-config-client,對應的pom.xml如下

 

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

   <modelVersion>4.0.0</modelVersion>

 

   <groupId>spring-cloud</groupId>

   <artifactId>sc-config-client</artifactId>

   <version>0.0.1-SNAPSHOT</version>

   <packaging>jar</packaging>

 

   <name>sc-config-client</name>

   <url>http://maven.apache.org</url>

 

   <parent>

      <groupId>org.springframework.boot</groupId>

      <artifactId>spring-boot-starter-parent</artifactId>

      <version>2.0.4.RELEASE</version>

   </parent>

 

   <dependencyManagement>

      <dependencies>

        <dependency>

           <groupId>org.springframework.cloud</groupId>

           <artifactId>spring-cloud-dependencies</artifactId>

           <version>Finchley.RELEASE</version>

           <type>pom</type>

        </dependency>

 

      </dependencies>

   </dependencyManagement>

 

   <properties>

      <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

      <maven.compiler.source>1.8</maven.compiler.source>

      <maven.compiler.target>1.8</maven.compiler.target>

   </properties>

   <dependencies>

 

      <dependency>

        <groupId>org.springframework.cloud</groupId>

        <artifactId>spring-cloud-starter-config</artifactId>

        <version>2.0.1.RELEASE</version>

      </dependency>

 

      <!--

      <dependency>

        <groupId>org.springframework.cloud</groupId>

        <artifactId>spring-cloud-config-client</artifactId>

        <version>2.0.1.RELEASE</version>

      </dependency>

       -->

 

      <dependency>

        <groupId>org.springframework.boot</groupId>

        <artifactId>spring-boot-starter-web</artifactId>

      </dependency>

 

      <dependency>

        <groupId>org.springframework.cloud</groupId>

         <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>

        <version>2.0.1.RELEASE</version>

      </dependency>

 

   </dependencies>

</project>

 

 

 

 

其中:spring-cloud-starter-config與spring-cloud-config-client可以二選一,但是根據選擇的依賴不同對應的配置文件有些許不一樣。spring-cloud-starter-config已經包含spring-cloud-config-client,所以選擇依賴spring-cloud-starter-config。

 

 

3、 創建配置文件bootstrap.yml

 

#服務端口

server:

  port: 8200

eureka:

  client:

    serviceUrl:

      defaultZone: http://localhost:5001/eureka/

spring:

  application:

    name: sc-config-client

  cloud:

    config:

      label: master # 配置文件所在分支

      #uri: http://127.0.0.1:8100/  #配置服務中心

      profile: dev  # dev根據具體情況來修改

      discovery:

        serviceId: sc-config-server #配置服務實例名稱

        enabled: true  #開啟配置服務發現

 

 

 

備注:sc-config-server為配置服務實例名稱,對應sc-config-server項目的bootstrap.yml配置文件的如下配置項

 

 

4、         創建啟動類ConfigClientApplication.java

 

package sc.config.client;

 

import org.springframework.boot.SpringApplication;

import org.springframework.boot.autoconfigure.SpringBootApplication;

//import org.springframework.cloud.client.discovery.EnableDiscoveryClient;

import org.springframework.cloud.netflix.eureka.EnableEurekaClient;

 

@SpringBootApplication

//@EnableDiscoveryClient

@EnableEurekaClient

public class ConfigClientApplication {

 

   public static void main(String[] args) {

      SpringApplication.run(ConfigClientApplication.class, args);

   }

}

 

 

 

 

5、為了驗證是否能不能在config server獲取到配置項,創建一個restful類型的controller:ConfigController.java

 

package sc.config.client.controller;

 

import java.util.HashMap;

import java.util.Map;

 

import org.springframework.beans.factory.annotation.Value;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RestController;

 

@RestController

public class ConfigController {

 

   // git配置文件里的key

   @Value("${jdbc.driverClassName}")

    private String driverClassName;

  

   @Value("${jdbc.url}")

    private String url;

  

   @Value("${jdbc.username}")

    private String username;

  

   @Value("${jdbc.password}")

    private String password;

  

   @RequestMapping(value="/config/getValue")

   public Map<String, Object> getConfigFromGit() {

      Map<String, Object> result = new HashMap<String, Object>();

      result.put("code", "000000");

      result.put("msg", "ok");

      Map<String, Object> body = new HashMap<String, Object>();

      body.put("driverClassName", driverClassName);

      body.put("url", url);

      body.put("username", username);

      body.put("password", password);

      result.put("body", body);

      return result;

   }

 

}

 

 

 

6、先啟動注冊中心,對應的項目為sc-eureka-server;再啟動config sever,對應的項目為sc-config-server。然后驗證一下config sever是否啟動成功

方式一:訪問注冊中心,可以看到config sever已經注冊到注冊中心了

 

 

方式二:訪問配置文件對應的路徑看看是否可以獲取配置文件,如果能獲取到說明啟動成功

 

 

給大家一一對應一下yml問下的訪問方式,這些在config server那篇博文只是大概提了一下:

{[/{name}-{profiles}.yml || /{name}-{profiles}.yaml],methods=[GET]}:

http://127.0.0.1:8100/application-dev.yml

{[/{name}/{profiles:.*[^-].*}],methods=[GET]}:

http://127.0.0.1:8100/application/dev

{[/{name}/{profiles}/{label:.*}],methods=[GET]}: http://127.0.0.1:8100/application/dev/master

{[/{label}/{name}-{profiles}.yml || /{label}/{name}-{profiles}.yaml],methods=[GET]}:

http://127.0.0.1:8100/master/application-dev.yml

 

7、啟動config client對應的項目sc-config-client

當spring.cloud.config.profile的值為dev時訪問http://127.0.0.1:8200/config/getValue

 

 

當spring.cloud.config.profile的值為prd時訪問http://127.0.0.1:8200/config/getValue

 

 

可以看到spring.cloud.config.profile配置不一樣時,分配獲取到git倉庫的application-dev.yml和application-prd.yml配置文件的內容

 


免責聲明!

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



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