config的用途?
将cloud中各微服务的配置文件外部集中化,实行统一管理。尤其在一个服务负载时,配置的集中管理将显得非常方便。

spring cloud config 的使用
* config client
1.dependcy

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

2.引入bootstrap.yml配置文件_指定config_server_ip
这个文件的作用就是,在application启动的时候加载这些配置。它是applicationContext的父级上下文,而application.yml配置文件对应的是applicationContext。bootstrap.yml的配置将是application默认的配置参数,可以设置被application的相同参数所override.比如:

spring:cloud:config:allow-override: truename: web-demouri: http://localhost:8888fail-fast: trueprofile: testretry:initial-interval: 1000max-attempts: 6max-interval: 2000

spring.cloud.config.allow-override用于参数是否允许被覆盖;
spring.cloud.config.name微服务的配置{application}名称,如果不设置默认采用spring.application.name;
spring.cloud.config.uri指的是spring cloud config server 的uri,默认是localhost:8888;
spring.cloud.config.fail-fast指的是如果连接不上直接启动失败;
spring.cloud.config.profile指的是当前使用哪个配置文件,通常有dev、test、pro;
spring.cloud.config.usernam连接用户名
spring.cloud.config.password连接密码
spring.cloud.config.retry.inital-interval失败重连的间隔;
spring.cloud.config.retry.max-interval失败重连的最大间隔;
spring.cloud.config.retry.max-attempts失败重连得最大次数;

2.2 引入bootstrap.yml配置文件_通过Eureka服务发现来配置configserver

spring.application.name=spring-data-demo
server.port=8081spring.cloud.config.name=spring-data-demo
spring.cloud.config.profile=dev
spring.cloud.config.label=master
spring.cloud.config.fail-fast=true
spring.cloud.config.allow-override=true
#spring.cloud.config.uri=http://localhost:18001
spring.cloud.config.retry.initial-interval=1000
spring.cloud.config.retry.max-attempts=6
spring.cloud.config.retry.max-interval=2000
spring.cloud.config.retry.multiplier=1.1
spring.cloud.config.discovery.enabled=true
spring.cloud.config.discovery.serviceId=spring-config-demoeureka.instance.appname=spring-data-demo
eureka.instance.app-group-name=data
eureka.instance.prefer-ip-address=true
eureka.instance.ip-address=127.0.0.1
eureka.instance.instance-id= ${spring.application.name}:${server.port}
#eureka.instance.home-page-url-path=/
#eureka.instance.health-check-url-path=/health
#eureka.instance.status-page-url-path=/status
eureka.instance.lease-expiration-duration-in-seconds=30
eureka.instance.lease-renewal-interval-in-seconds=10eureka.client.serviceUrl.defaultZone=http://localhost:19002/eureka/,http://localhost:19001/eureka/

注意:由于bootstrap.yml比application.properties先启动,也就是为什么要将configserver配置在这里(通过application引入的文件就可以直接使用configserver的参数). 由于configserver通过Eureka服务来发现,因此也需要将Eureka的配置信息写在这里。如果想上面的配置方式,就可以将eureka的配置信息独立放置。

3.远程配置文件的使用
使用起来很简单,可以在application.yml等配置文件中通过${}来引入;也可以像application.yml的配置参数直接通过注解被java代码使用。比如:
config server中web-demo-test.yml的配置参数:

#sys config
server:port: 8081#business config
user:username: yangycpassword: 123456

config client 中application-test.yml的配置参数:

server:port: ${server.port}#business config
user:username: ${user.username}password: ${user.password}

注:其中${server.port}就会使用config server 的参数来替换;

* config server
1.depandcy

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

2.启动时增加@EnableConfigServer 注解

@SpringBootApplication
@EnableConfigServer
public class ConfigDemoApplication {public static void main(String[] args) {SpringApplication.run(ConfigDemoApplication.class, args);}
}

3.config backend 存储的分类
3.1 native本地存储

spring.application.name=config-demo
server.port=8888
spring.profiles.active=native
spring.cloud.config.server.native.search-locations=classpath:/config/{application}
spring.cloud.config.server.native.add-label-locations=false
spring.cloud.config.server.accept-empty=false
logging.level.root=debug

spring.profiles.active:配置文件的类型。native本地文件;jdbc/svn/git/vault。
spring.cloud.config.server.native.search-locations:本地文件路径。可以是磁盘文件,也可以是classpath;
注:path中可以使用占位符{application}、{profiles}、{label}。也就是文件目录中可以对应创建相应目录,从而达到动态适配的效果。
spring.cloud.config.server.native.add-label-locations:表示配置文件目录是否包括label。
spring.cloud.config.server.accept-empty:表示是否允许获取空数据。

3.2 JDBC存储
增加依赖

        <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-jpa</artifactId></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId></dependency>

配置数据源

spring.datasource.url=
spring.datasource.username=
spring.datasource.password=

配置config server

spring.profiles.active=jdbc
spring.cloud.config.server.jdbc.sql=SELECT `KEY`,`VALUE` FROM PROPERTIES WHERE APPLICATION =? AND `PROFILE`=? AND LABEL=?
spring.cloud.config.server.jdbc.order=0

注:其中APPLICATION对应的是{application},PROFILE对应{profile},LABLE对应{label}。会自动设置。

数据库建表

create table PROPERTIES
(APPLICATION VARCHAR(100),`PROFILE`  VARCHAR(100),LABEL VARCHAR(100),`KEY` VARCHAR(100),`VALUE` VARCHAR(100)
) ENGINE=INNODB DEFAULT CHARSET=UTF8;

3.3 SVN存储
增加依赖

         <dependency><groupId>org.tmatesoft.svnkit</groupId><artifactId>svnkit</artifactId><version>1.9.2</version></dependency>
spring.profiles.active=subversion
spring.cloud.config.server.svn.uri=
spring.cloud.config.server.svn.username=
spring.cloud.config.server.svn.password=
spring.cloud.config.server.svn.default-label=config
spring.cloud.config.server.svn.search-paths=

spring.profiles.active=subversion 表示配置文件使用的backend方式
spring.cloud.config.server.svn.uri表示SVN仓库地址
spring.cloud.config.server.svn.username用户名
spring.cloud.config.server.svn.password密码
spring.cloud.config.server.svn.default-label必须配置Git也是一样,指的是uri下的最后一级目录,默认是trunk,否则需要指定。
spring.cloud.config.server.svn.search-paths指的是本地仓库的获取地址

3.4 git存储

spring.profiles.active=git
spring.cloud.config.server.git.basedir=
spring.cloud.config.server.git.clone-on-start=false
spring.cloud.config.server.git.force-pull=true
spring.cloud.config.server.git.host-key=
spring.cloud.config.server.git.host-key-algorithm=
spring.cloud.config.server.git.delete-untracked-branches=true
spring.cloud.config.server.git.ignore-local-ssh-settings=true
spring.cloud.config.server.git.known-hosts-file=
spring.cloud.config.server.git.order=1
spring.cloud.config.server.git.passphrase=
spring.cloud.config.server.git.password=
spring.cloud.config.server.git.preferred-authentications=
spring.cloud.config.server.git.private-key=
spring.cloud.config.server.git.refresh-rate=
spring.cloud.config.server.git.search-paths=
spring.cloud.config.server.git.strict-host-key-checking=true
spring.cloud.config.server.git.timeout=5
spring.cloud.config.server.git.uri=
spring.cloud.config.server.git.username=

spring.cloud.config.server.git.basedir:像SVN/GIT会先将remote中的文件check out / clone到本地,默认是/temp临时目录下,但有些操作系统会将临时文件删除,因而需要修改对应的目录。而这个配置文件也就是配置本地库的地址。
spring.cloud.config.server.git.force-pul:指是否从remote 仓库中强拉取最新数据。
spring.cloud.config.server.git.uri:remote repository地址
spring.cloud.config.server.git.username:用户名
spring.cloud.config.server.git.password:密码
spring.cloud.config.server.git.search-paths:uri下的子目录,是可以使用占位符{application}

spring:cloud:config:server:git:uri: https://git/common/config-repo.gitrepos:team-a:pattern: team-a-*cloneOnStart: trueuri: http://git/team-a/config-repo.gitteam-b:pattern: team-b-*cloneOnStart: falseuri: http://git/team-b/config-repo.gitteam-c:pattern: team-c-*uri: http://git/team-a/config-repo.git

3.5 Vault 存储

spring.profiles.active=vault
spring.cloud.config.server.vault.host=
spring.cloud.config.server.vault.port=
spring.cloud.config.server.vault.scheme=http
spring.cloud.config.server.vault.profile-separator=,
spring.cloud.config.server.vault.order=1
spring.cloud.config.server.vault.backend=secret

3.6 多种类型复合使用

spring:profiles:active: git, svncloud:config:server:svn:uri: file:///path/to/svn/repoorder: 2git:uri: file:///path/to/git/repoorder: 1

3.7 通过实现EnvironmentRepository,自定义获取配置参数
http://www.mamicode.com/info-detail-1784908.html

参考文档
http://cloud.spring.io/spring-cloud-static/spring-cloud-config/2.0.0.RC1/single/spring-cloud-config.html
https://springcloud.cc/spring-cloud-config.html

SpringCloud Config详解相关推荐

  1. App.Config详解

    App.Config详解 应用程序配置文件是标准的 XML 文件,XML 标记和属性是区分大小写的.它是可以按需要更改的,开发人员可以使用配置文件来更改设置,而不必重编译应用程序. 配置文件的根节点是 ...

  2. (转)asp.net夜话之十一:web.config详解

    在开发中经常会遇到这样的情况,在部署程序时为了保密起见并不将源代码随项目一同发布,而我们开发时的环境与部署环境可能不一致(比如数据库不一样),如果在代码中保存这些配置这些信息部署时需要到用户那里更改代 ...

  3. Web.config详解+asp.net优化(1)

    一.认识Web.config文件 Web.config 文件是一个xml文本文件,它用来储存 asp.NET Web 应用程序的配置信息(如最常用的设置asp.NET Web 应用程序的身份验证方式) ...

  4. Web.config详解+asp.net优化

    Web.config详解+asp.net优化(1) 一.认识Web.config文件 Web.config 文件是一个xml文本文件,它用来储存 asp.NET Web 应用程序的配置信息(如最常用的 ...

  5. App.Config详解及读写操作

    一.App.Config详解 应用程序配置文件是标准的 XML 文件,XML 标记和属性是区分大小写的.它是可以按需要更改的,开发人员可以使用配置文件来更改设置,而不必重编译应用程序. 配置文件的根节 ...

  6. SpringCloud Gateway 详解

    文章目录 一.网关简介 1.服务网关介绍 1.1 API网关介绍 1.2 网关主要功能 2.常用网关介绍 2.1 Nginx+Lua 2.2 Kong 2.3 Traefik 2.4 Zuul 二.S ...

  7. Dubbo与SpringCloud框架详解

    一.互联网架构演进 1.互联网项目架构 1. 互联网项目与传统项目 互联网项目架构的特点: 用户多 流量大,并发高 海量数据 易受攻击 功能繁琐 变更快 传统项目和互联网项目的不同: 用户体验: 美观 ...

  8. SpringCloud Alibaba 详解

    SpringCloud Alibaba 基础详解 SpringCloud Alibaba 概念 SpringCloud Alibaba配置及使用 SpringCloud Alibaba Nacos服务 ...

  9. 微服务之SpringCloud实战(五):SpringCloud Eureka详解

    Eureka详解 在第三节高可用中,实际已经讲解了服务的注册,只不过注册的是Eureka本身,原理相同,通过这几篇文章我相信大家对Eureka有了一定的了解,三个核心角色:服务注册中心.服务提供者和服 ...

最新文章

  1. java ftp下载文件源码_java实现ftp文件下载的源代码
  2. Keras框架训练模型保存及载入继续训练
  3. 蓝桥杯 最长公共子序列
  4. python语句块标记_Python简单语句
  5. 既然是青春,怎么能错过?唯一理由只缺1张免费票!
  6. HttpCookie
  7. 动感灯箱制作流程培训_从事广告行业20年老师傅,揭秘广告牌类型和制作工艺流程 !...
  8. 原码和补码在计算机中的应用,原码,补码和反码在计算机中的作用
  9. 伪随机数与采样(sampling)
  10. 软件测试的艺术(二)
  11. 获取西刺代理IP构建代理池
  12. 计算机,通信,自动化等方向期刊排名
  13. 【梳理】离散数学 第15章 欧拉图与哈密顿图 15.3 最短路问题、中国邮递员问题与货郎担问题
  14. html中三角函数表示什么,三角函数的化一公式
  15. axure中继器求和_中继器使用场景(二):购物车金额实时求和
  16. Q-learning 算法工作原理
  17. 软件设计师---数据库系统基础
  18. 文件里的三个重要时间:access time(访问时间), modify time(修改时间), change time(状态改动时间)
  19. 手机录屏并转换成gif动图
  20. 计算机网络互连基础技术及实战

热门文章

  1. mysql语句6_MySQL的SQL语句 - 数据操作语句(6)- INSERT 语句
  2. CN笔记:第三章 链路层
  3. new和delete创建和销毁二维数组
  4. 西瓜书+实战+吴恩达机器学习(十七)规则学习(序贯覆盖)
  5. 线性代数基础(矩阵、范数、正交、特征值分解、奇异值分解、迹运算)
  6. python编程:从入门到实践学习笔记-文件和异常
  7. 香港科技大学TensorFlow速成(1)
  8. 小括号教学设计导入_【干货】教学设计万能模板已到达,各科都能用!
  9. 全连接层的作用_全连接层实现
  10. rabbitmq接口异常函数方法_[项目更新] 集成RabbitMQ队列与EventBus总线