21.Spring Cloud之分布式配置中心Spring Cloud Config注册中心版

柔情只为你懂 2022-05-22 04:35 264阅读 0赞

前面的博客已经演示无注册中心版,那么Config Server也能以服务的方式注册到服务中心,被其他应用发现并获取配置信息。

服务端配置(Config Server)

  • pom.xml


    4.0.0
    2.spring-cloud-service-provide
    service-provide
    jar
    0.0.1-SNAPSHOT
    spring-cloud Maven Webapp
    http://maven.apache.org


    org.springframework.boot
    spring-boot-starter-parent
    1.5.2.RELEASE



    UTF-8
    UTF-8
    1.8
    Dalston.RELEASE




    org.springframework.cloud
    spring-cloud-starter-eureka



    org.springframework.cloud
    spring-cloud-starter-hystrix


    org.springframework.cloud
    spring-cloud-config-server





    org.springframework.cloud
    spring-cloud-dependencies
    ${spring-cloud.version}
    pom
    import







    org.springframework.boot
    spring-boot-maven-plugin



  • application.properties

    指定微服务的名称后续在调用的时候只需要使用该名称就可以进行服务的访问

    spring.application.name=config-server
    server.port=8779

    配置服务注册中心

    注册中心地址

    eureka.client.serviceUrl.defaultZone=http://testhost:8000/eureka/,http://testhost2:8001/eureka/

    指定本地仓库路径,默认是随机生成

    spring.cloud.config.server.git.basedir=/home/springcloud/configrepos

    git仓库配置 主分支路径

    spring.cloud.config.server.git.uri=https://gitee.com/niugangxy/springcloud

    很多场景下,可能把配置文件放在git仓库子目录下,可通过searchPaths配置,searchPaths也支持占位符

    如下配置,Config server会在git目录spring-cloud-config-respo,及其子目录下查找配置文件

    spring.cloud.config.server.git.searchPaths=spring-cloud-config-respo

    git用户名

    spring.cloud.config.server.git.username=username

    git用户密码

    spring.cloud.config.server.git.password=password







 
  • 启动类

    package com.niugang;

    import org.springframework.boot.SpringApplication;
    import org.springframework.cloud.client.SpringCloudApplication;
    import org.springframework.cloud.config.server.EnableConfigServer;

    /**

    • config server配置
    • @author niugang
    • @SpringBootApplication
    • @EnableDiscoveryClient
    • @EnableCircuitBreaker
      */
      @SpringCloudApplication
      @EnableConfigServer
      public class Application {
      public static void main(String[] args) {
      SpringApplication.run(Application.class, args);
      }
      }

70

客户端(Config Server)

  • pom.xml
  1. <project xmlns="http://maven.apache.org/POM/4.0.0"
  2. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  4. <modelVersion>4.0.0</modelVersion>
  5. <groupId>2.spring-cloud-service-provide</groupId>
  6. <artifactId>service-provide</artifactId>
  7. <packaging>jar</packaging>
  8. <version>0.0.1-SNAPSHOT</version>
  9. <name>spring-cloud Maven Webapp</name>
  10. <url>http://maven.apache.org</url>
  11. <!--springboot采用1.5.x 对应springcloud版本为 Dalston -->
  12. <parent>
  13. <groupId>org.springframework.boot</groupId>
  14. <artifactId>spring-boot-starter-parent</artifactId>
  15. <version>1.5.2.RELEASE</version>
  16. <relativePath />
  17. </parent>
  18. <properties>
  19. <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  20. <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
  21. <java.version>1.8</java.version>
  22. <spring-cloud.version>Dalston.RELEASE</spring-cloud.version>
  23. </properties>
  24. <dependencies>
  25. <dependency>
  26. <groupId>org.springframework.cloud</groupId>
  27. <artifactId>spring-cloud-starter-eureka</artifactId>
  28. </dependency>
  29. <!--@SpringCloudApplication注解需要依赖的 -->
  30. <dependency>
  31. <groupId>org.springframework.cloud</groupId>
  32. <artifactId>spring-cloud-starter-hystrix</artifactId>
  33. </dependency>
  34. <!-- Could not resolve placeholder 'from' in value "${from}" -->
  35. <!-- <dependency>
  36. <groupId>org.springframework.cloud</groupId>
  37. <artifactId>spring-cloud-config-server</artifactId>
  38. </dependency> -->
  39. <dependency>
  40. <groupId>org.springframework.boot</groupId>
  41. <artifactId>spring-boot-starter-web</artifactId>
  42. </dependency>
  43. <dependency>
  44. <groupId>org.springframework.cloud</groupId>
  45. <artifactId>spring-cloud-starter-config</artifactId>
  46. </dependency>
  47. <dependency>
  48. <groupId>org.springframework.retry</groupId>
  49. <artifactId>spring-retry</artifactId>
  50. </dependency>
  51. <dependency>
  52. <groupId>org.springframework.boot</groupId>
  53. <artifactId>spring-boot-starter-aop</artifactId>
  54. </dependency>
  55. </dependencies>
  56. <dependencyManagement>
  57. <dependencies>
  58. <dependency>
  59. <groupId>org.springframework.cloud</groupId>
  60. <artifactId>spring-cloud-dependencies</artifactId>
  61. <version>${spring-cloud.version}</version>
  62. <type>pom</type>
  63. <scope>import</scope>
  64. </dependency>
  65. </dependencies>
  66. </dependencyManagement>
  67. <!-- 这样变成可执行的jar -->
  68. <build>
  69. <plugins>
  70. <plugin>
  71. <groupId>org.springframework.boot</groupId>
  72. <artifactId>spring-boot-maven-plugin</artifactId>
  73. </plugin>
  74. </plugins>
  75. </build>
  76. </project>
  • appplication.properties

    配置端口

    server.port=8780

  • bootstrap.properties

    指定注册中心

    eureka.client.serviceUrl.defaultZone=http://testhost:8000/eureka/,http://testhost2:8001/eureka/

    开起通过服务来访问Config Server

    spring.cloud.config.discovery.enabled=true

    指定配置分布式配置中心服务名

    spring.cloud.config.discovery.serviceId=config-server

    指定git仓库的分支,对应config server所获取的配置文件的{label}

    spring.cloud.config.label=master

    失败快速响应和重试

    spring.cloud.config.failFast=true

    对应 config server所获取的配置文件的{application}

    spring.application.name=niugang

    对应config server所获取的配置文件的{profile}

    spring.cloud.config.profile=dev

  • 启动类

    package com.niugang;

  1. import org.springframework.boot.SpringApplication;
  2. import org.springframework.cloud.client.SpringCloudApplication;
  3. /**
  4. * @author niugang
  5. *
  6. */
  7. @SpringCloudApplication
  8. public class Application {
  9. public static void main(String[] args) { SpringApplication.run(Application.class, args);
  10. }
  11. }
  • controller测试

    package com.niugang.controller;

  1. import org.springframework.beans.factory.annotation.Value;
  2. import org.springframework.web.bind.annotation.RequestMapping;
  3. import org.springframework.web.bind.annotation.RestController;
  4. @RestController
  5. public class ConfigClientController {
  6. /**
  7. * 从niugang-dev.properties中获取配置的from值
  8. */
  9. @Value("${from}")
  10. private String from;
  11. @RequestMapping("/profile")
  12. public String profile() {
  13. return this.from;
  14. }
  15. }






 

70 1

微信公众号

  1. ![watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L25pdWdhbmcwOTIw_size_16_color_FFFFFF_t_70][]

发表评论

表情:
评论列表 (有 0 条评论,264人围观)

还没有评论,来说两句吧...

相关阅读