• SpringCloud 14 Config:客户端连接服务端


    14.1 客户端连接服务端


    1. 我们可以尝试 再 新建 一个 config-client.yaml 配置文件,里面写一些 实际的内容,然后我们一会儿新建个 客户端程序 去 拿 这个 配置文件。

    在这里插入图片描述

    spring:
      profiles:
        active: dev
      
    ---
    # spring 的配置
    
    server:
      port: 8201
    
    spring:
      profiles: dev
      application:
        name: springcloud-provider-dept
    
    # Eureka 的配置,服务注册 到 哪里
    
    eureka:
      client:
        service-url:
          defaultZone: http://eureka7001.com:7001/eureka,http://eureka7002.com:7002/eureka,http://eureka7003.com:7003/eureka
    
    ---
    
    server:
      port: 8202
    
    # spring 的配置
    
    spring:
      profiles: test
      application:
        name: springcloud-provider-dept
    
    # Eureka 的配置,服务注册 到 哪里
    
    eureka:
      client:
        service-url:
          defaultZone: http://eureka7001.com:7001/eureka,http://eureka7002.com:7002/eureka,http://eureka7003.com:7003/eureka
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40

    然后 push 到 远程仓库!

    git add .
    git commit -m "第二次 提交的配置文件"
    git push origin master
    
    • 1
    • 2
    • 3

    在这里插入图片描述

    1. 新建 一个 springcloud-config-client-3355 客户端 我们 暂且 先 不配置 它 的 端口号,如果 我们要是 能够 读取到 远程配置的话,那么就可以 把 8201 那个端口号拿过来使用了!这里 3355 只是 做一个 区别的 对比!!!
    
    <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">
        <parent>
            <artifactId>springcloudartifactId>
            <groupId>top.muquanyugroupId>
            <version>1.0-SNAPSHOTversion>
        parent>
        <modelVersion>4.0.0modelVersion>
    
        <artifactId>springcloud-config-client-3355artifactId>
    
        <properties>
            <maven.compiler.source>8maven.compiler.source>
            <maven.compiler.target>8maven.compiler.target>
        properties>
    
        <dependencies>
            
            
            <dependency>
                <groupId>org.springframework.cloudgroupId>
                <artifactId>spring-cloud-starter-configartifactId>
                <version>3.1.3version>
            dependency>
    
            <dependency>
                <groupId>org.springframework.bootgroupId>
                <artifactId>spring-boot-starter-webartifactId>
            dependency>
            
            <dependency>
                <groupId>org.springframework.cloudgroupId>
                <artifactId>spring-cloud-starter-eurekaartifactId>
                <version>1.4.7.RELEASEversion>
            dependency>
    
    
            
            <dependency>
                <groupId>org.springframework.cloudgroupId>
                <artifactId>spring-cloud-starter-bootstrapartifactId>
                <version>3.1.3version>
            dependency>
    
        dependencies>
    
    project>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49

    在这里插入图片描述
    3. 区别 bootstrap.yamlapplication.yaml

    bootstrap.yaml通常 被称为 系统级别的 配置
    application.yaml通常 被称为 用户界别 的 配置

    优先级 肯定是 系统级别 > 用户界别

    bootstrap.yaml

    # 系统级别的配置
    spring:
      cloud:
        config:
          name: config-client # 需要 从 git 上读取的 资源名称,不需要后缀名
          profile: dev # 拿 dev 这个环境的
          uri: http://localhost:3344 # 连接到 服务
          label: master # 去哪个 分支里面拿取
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    在这里插入图片描述
    application.yaml

    # 用户级别的 配置
    spring:
      application:
        name: springcloud-config-client-3355
    
    • 1
    • 2
    • 3
    • 4

    在这里插入图片描述
    4. 编写 controller 并且使用 @Value() 注解 进行 属性的注入,那么有的人一下子就明白了,因为 @Value 是可以 通过 ${} 取到 yaml 配置里面的值 来注入的,那么我们是不是可以用它直接 拿到 远程配置文件里面的属性呢??

    package top.muquanyu.springcloud.controller;
    
    import org.springframework.beans.factory.annotation.Value;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RestController;
    
    @RestController
    public class ConfigClientController {
    
       @Value("${spring.application.name}")
       private String applicationName;
    
       @Value("${eureka.client.service-url.defaultZone}")
       private String eurekaServer;
    
       @Value("${server.port}")
       private String port;
    
       @RequestMapping("/config")
       public String getConfig(){
           System.out.println("走了 我这个请求");
           return "application:" + applicationName + "\n" +
                   "eurekaServer:" + eurekaServer + "\n" +
                   "port:" + port;
       }
    
       @RequestMapping("hello")
       public String hello(){
           return "hello";
       }
    
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32

    在这里插入图片描述

    package top.muquanyu.springcloud;
    
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    
    @SpringBootApplication
    public class Config_Client_3355 {
        public static void main(String[] args) {
            SpringApplication.run(Config_Client_3355.class,args);
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    在这里插入图片描述

    诶 ~ 我们发现了一个大秘密!!!我们并没有配置 配置端口号,但是 这里 已经 使用了 远程配置 config-client-dev 的 端口号了。也就代表着,我们的远程文件 确实 拿到了!

    在这里插入图片描述

    如果 感觉 不安全的话,其实 你还可以 在 你自己的服务器上,搭建 gitLab 详细的可以 点击去 了解一下。

  • 相关阅读:
    OpenRoads地形模型添加(增补)地形点
    Go中rune类型浅析
    移动端日志采集与分析最佳实践
    Python使用大漠插件前的准备工作
    一、【漏洞复现系列】Tomcat文件上传 (CVE-2017-12615)
    程序员告别996,这款开发工具火了
    根据基站位置区识别码(LCA)和小区识别(CI)获取经纬度
    分享96个节日庆典PPT,总有一款适合您
    mybatis 01: 静态代理 + jdk动态代理 + cglib动态代理
    git介绍和安装、(git,github,gitlab,gitee介绍)、git工作流程、git常用命令、git忽略文件
  • 原文地址:https://blog.csdn.net/qq_52606908/article/details/126284276