zoukankan      html  css  js  c++  java
  • spring cloud学习(六)Spring Cloud Config

    Spring Cloud Config

    参考个人项目

    参考个人项目 : (希望大家能给个star~)
    https://github.com/FunriLy/springcloud-study/tree/master/%E6%A1%88%E4%BE%8B5

    什么是 Spring Cloud Config?

    配置管理工具包,让你可以把配置放到远程服务器,集中化管理集群配置,目前支持本地存储、Git以及Subversion。
    场景介绍:在一个 Application 中,很经常需要连接资源和其它应用,经常有很多需要外部设置的信息去调整Application行为。我们在实际开发应用中的会经常见到的xml、properties、yaml等就是配置信息,但这种做法有一定的缺陷:每次更新需要重新打包和重启。

    创建 Spring Cloud Config Server(Git 存储)

    • 这里我用了我原本的”服务注册中心”(Eureka Server),将其改造为”配置中心”(Config Server)。

    • 引入依赖

           <!-- Config Server -->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-config-server</artifactId>
            </dependency>
    
    •  在启动主类添加@EnableConfigServer注解,开启 Config Server。
    @SpringBootApplication
    @EnableEurekaServer
    @EnableConfigServer
    public class MySpringCloudApplication {
        public static void main(String[] args) {
            SpringApplication.run(MySpringCloudApplication.class, args);
        }
    }
    
    • 在Github上创建一个项目,并在其中添加配置文件 config-client.properties,在里面添加一个属性config=hello world !

    • application.properties中配置服务信息以及git信息(这里不包括了 Eureka Server 的配置,自行补充)

    server.port=8761
    spring.cloud.config.server.git.uri=https://github.com/FunriLy/springcloud-study/
    spring.cloud.config.server.git.searchPaths=config-repo
    spring.cloud.config.server.git.username=Username
    spring.cloud.config.server.git.password=Password
    
    {
      "name": "config-client",
      "profiles": [
        "default"
      ],
      "label": null,
      "version": "af7ce2a15dcdea9dab42e6b44d37e401072382d8",
      "propertySources": [
        {
          "name": "https://github.com/FunriLy/springcloud-study/config-repo/config-client.properties",
          "source": {
            "configword": "hello world !"
          }
        }
      ]
    }
    

    创建一个Spring Cloud Config Client

    • 这里我用到了原来的”服务提供者”(Eureka Client),将其改造为 Config Client。

    • resource下创建bootstrap.properties,并设置信息,具体如下:

    spring.application.name=config-client
    spring.cloud.config.profile=default
    spring.cloud.config.label=master
    spring.cloud.config.uri=http://localhost:8761/
    
    注意这里是bootstrap.properties而不是appliction.properties。
    因为bootstrap.properties会在应用启动之前读取,而spring.cloud.config.uri会影响应用启动
    
    • 创建一个Controller来进行测试。
    @RestController
    public class ConfigController {
    
        @Value("${configword}")
        String configword;
    
        @RequestMapping("/config")
        public String printfConfig(){
            return "The Config Word Is : "+configword;
        }
    }
    
    The Config Word Is : hello world !
    

    附录

    来源于 Spring Cloud Config 中文文档。

    URL与配置文件的映射关系

    • /{application}/{profile}[/{label}]
    • /{application}-{profile}.yml
    • /{label}/{application}-{profile}.yml
    • /{application}-{profile}.properties
    • /{label}/{application}-{profile}.properties

    application是SpringApplicationspring.config.name,(一般来说’application’是一个常规的Spring Boot应用),profile是一个active的profile(或者逗号分隔的属性列表),label是一个可选的git标签(默认为”master”)。
    比如,我的文件名是”config-client”,一般在Github上都是default环境,默认为master分支。所以就是/config-client/default/master

    Config Server 配置文件

    • spring.cloud.config.server.git.uri:配置git仓库位置
    • spring.cloud.config.server.git.searchPaths:配置仓库路径下的相对搜索位置,可以配置多个
    • spring.cloud.config.server.git.username:访问git仓库的用户名
    • spring.cloud.config.server.git.password:访问git仓库的用户密码

    Config Client 配置文件

    • spring.application.name:对应前配置文件中的{application}部分
    • spring.cloud.config.profile:对应前配置文件中的{profile}部分
    • spring.cloud.config.label:对应前配置文件的git分支  
    • spring.cloud.config.uri:配置中心的地址    

    其他

    在Config Server中,还有一种不使用Git的”native”的配置方式,这种方式是从本地classpath 或文件系统中加载配置文件(使用 “spring.cloud.config.server.native.searchLocations”配置项进行设置)。 加载Config Server 的”spring.profiles.active=native”配置项可以开启native配置。如:

    spring.profiles.active=native
    spring.cloud.config.server.native.searchLocations=file:D:/properties
    

     注意 : 牢记使用file:前缀来指示资源(默认没有前缀是从classpath中去文件)。也可以嵌入${}环境参数占位符,但是windows系统下使用绝对路径,前缀后面需要多加个”/”。

  • 相关阅读:
    大数据知识简单总结
    机器学习pipeline总结
    spark SQL、RDD、Dataframe总结
    hbase介绍
    git命令教程
    hive查询语句入门(hive DDL)
    hive安装部署
    调用高德地图,通过获取的区域名称得到行政区域详情
    搭建SSM框架的配置文件
    jquery实现get的异步请求
  • 原文地址:https://www.cnblogs.com/MaxElephant/p/8109250.html
Copyright © 2011-2022 走看看