• SpringCloud Config客户端


     SpringCloud Config服务端

    1、导入依赖

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

     

    2、配置bootstrap.yml文件,连接到config服务端

    #注意config-client的配置需要放到bootstrap.yml中
    management:
      security:
        enabled: false
    spring:
      application:
        name: mima-cloud-config-client
      cloud:
        consul:
          discovery: 
            instanceId: ${spring.application.name}:${server.port}
          host: localhost
          port: 8500
          config:
            enabled: true #falseu7981u7528Consulu914du7f6euff0cu9ed8u8ba4true
            format: YAML    # u8868u793aconsulu4e0au9762u6587u4ef6u7684u683cu5f0f u6709u56dbu79cd YAML PROPERTIES KEY-VALUE FILES
            #data-key: configuration    #u8868u793aconsulu4e0au9762u7684KEYu503c(u6216u8005u8bf4u6587u4ef6u7684u540du5b57) u9ed8u8ba4u662fdata
            data-key: data    #u8868u793aconsulu4e0au9762u7684KEYu503c(u6216u8005u8bf4u6587u4ef6u7684u540du5b57) u9ed8u8ba4u662fdata
            #prefixu8bbeu7f6eu914du7f6eu503cu7684u57fau672cu6587u4ef6u5939
            #defaultContextu8bbeu7f6eu6240u6709u5e94u7528u7a0bu5e8fu4f7fu7528u7684u6587u4ef6u5939u540du79f0
            #profileSeparatoru8bbeu7f6eu7528u4e8eu4f7fu7528u914du7f6eu6587u4ef6u5728u5c5eu6027u6e90u4e2du5206u9694u914du7f6eu6587u4ef6u540du79f0u7684u5206u9694u7b26u7684u503c 
        config:
          #安全认证设置用户名密码
          uri: http://localhost:6063/ #config-server访问地址
          #指定profile,对应config-server所获取的配置文件中的{profile}
          #配置文件的几种写法
          #{application}-{profile}.yml
          #{application}-{profile}.properties
          #{application}/{profile}.yml
          profile: prod #相当于在远程git项目找到application-prod.properties文件
          label: master

     

    3、使用@Value注解

    import org.springframework.beans.factory.annotation.Value;
    import org.springframework.cloud.context.config.annotation.RefreshScope;
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.RestController;
    
    /**
     * 这边的@RefreshScope注解不能少,否则即使调用/refresh,配置也不会刷新
     */
    @RestController
    @RefreshScope
    public class ConfigClientController {
    
        @Value("${env}")
        private String env;
        
        @Value("${password}")
        private String password;
        
        @Value("${username}")
        private String username;
    
        @GetMapping("/config/profile")
        public String hello() {
            return this.env+","+this.password+","+this.username;
        }
    }

     

    4、application.properties 和 bootstrap.yml 区别
    4.1、首先yml和properties文件都是属于配置文件,功能一样。主要区别于application和bootstrap的加载顺序。

    Bootstrap.yml(bootstrap.properties)在application.yml(application.properties)之前加载,就像application.yml一样,但是用于应用程序上下文的引导阶段。

    4.2、典型场景
    a.当使用 Spring Cloud Config Server的时候,你应该在 bootstrap.yml 里面指定 spring.application.name和 spring.cloud.config.server.git.uri
    b.一些加密/解密的信息

    技术上,bootstrap.yml由父Spring ApplicationContext加载。父ApplicationContext被加载到使用application.yml的之前。

    当使用 Spring Cloud 的时候,配置信息一般是从 config server 加载的,为了取得配置信息(比如密码等),你需要一些提早的或引导配置。因此,把 config server 信息放在 bootstrap.yml,用来加载真正需要的配置信息。

    4.3、属性覆盖问题
    启动上下文时,Spring Cloud会创建一个Bootstrap Context,作为Spring应用的Application Context的父上下文。初始化的时候,Bootstrap Context负责从外部源加载配置属性并解析配置。这两个上下文共享一个从外部获取的Environment。Bootstrap属性有高优先级,默认情况下,它们不会被本地配置覆盖。 Bootstrap context和Application Context有着不同的约定,所以新增了一个bootstrap.yml文件,而不是使用application.yml (或者application.properties)。保证Bootstrap Context和Application Context配置的分离。

  • 相关阅读:
    测试流程规范系列(5):BUG提交
    测试流程规范系列(6):测试报告
    测试流程规范系列(7):测试准出
    安全测试系列(1):基本概念
    Linux系列(1):常用命令
    Linux——常用命令详解
    Ant——ant的使用
    java——XML与java对象装换
    SpringMVC——form标签的使用
    SpringMVC案例1——对User表进行CRUD操作
  • 原文地址:https://www.cnblogs.com/linjiqin/p/10335796.html
Copyright © 2020-2023  润新知