SpringBoot默认支持properties和YAML两种格式的配置文件。前者格式简单,但是只支持键值对。如果需要表达列表,最好使用YAML格式。SpringBoot支持自动加载约定名称的配置文件,例如application.yml。如果是自定义名称的配置文件,就要另找方法了。可惜的是,不像前者有@PropertySource这样方便的加载方式,后者的加载必须借助编码逻辑来实现。

一、bootstrap.yml(bootstrap.properties)与application.yml(application.properties)执行顺序

bootstrap.yml(bootstrap.properties)用来程序引导时执行,应用于更加早期配置信息读取,如可以使用来配置application.yml中使用到参数等

application.yml(application.properties) 应用程序特有配置信息,可以用来配置后续各个模块中需使用的公共参数等。

bootstrap.yml 先于 application.yml 加载

二、典型的应用场景如下:

当使用 Spring Cloud Config Server 的时候,你应该在 bootstrap.yml 里面指定 spring.application.name 和 spring.cloud.config.server.git.uri

和一些加密/解密的信息

技术上,bootstrap.yml 是被一个父级的 Spring ApplicationContext 加载的。这个父级的 Spring ApplicationContext是先加载的,在加载application.yml 的 ApplicationContext之前。

为何需要把 config server 的信息放在 bootstrap.yml 里?

当使用 Spring Cloud 的时候,配置信息一般是从 config server 加载的,为了取得配置信息(比如密码等),你需要一些提早的或引导配置。

因此,把 config server 信息放在 bootstrap.yml,用来加载真正需要的配置信息。

git仓库中配置文件的读取顺序:

有几种http访问的方式:

(1)首先根据application的名称来寻找,即application的名字(比如,即项目的名称abc).*来查找文件。

(2)如果没有对应的名字,则读取application.properties里面的内容,如果这个也没有,则返回错误。

比如git仓库中的master分支上面有两个配置文件:foobar-dev.yml和application.yml。

这两个文件中都有一个配置,名称相同,但是内容不同,假设foobar-dev.yml中的是profile=abc-foobar,application.yml中的是profile=abc-application

我们访问的时候比如:localhost:8080/master/foobar-dev.yml,则命中到foobar-dev.yml,读取的是abc-foobar

如果访问localhost:8080/master/foobar-default.yml,这个文件在git中是不存在的,则命中到application.yml中,读取的是profile=abc-application

总结:这里有个 优先级,先找对应名称的,如果没有则找默认的application.yml的内容,如果再没有,那就没办法了。

不同的模块微服务模块使用自己的配置,各自团队自己管理自己的配置,不同的环境配置不用的配置文件如何实现:

一种环境一个仓库

(1)通配符的方式(个人感觉这种方式比较好)

一个微服务对应一个git仓库:微服务的名称与git仓库的名称建立一个对应关系,这样子可以采用通配符的方式

隔离性比较好,不影响团队之间的工作。

一个环境一个文件,容易管理。

(2)模式匹配的方式(个人感觉比较麻烦)

springcloud的配置文件的读取顺序的更多相关文章

  1. SpringBoot 配置文件存放位置及读取顺序

    SpringBoot配置文件可以使用yml格式和properties格式 分别的默认命名为:application.yml.application.properties 存放目录 SpringBoot ...

  2. Mysql之 配置文件读取顺序

    On Unix, Linux and Mac OS X, MySQL programs read startup options from the following files, in the sp ...

  3. Mysql配置文件读取顺序

    On Unix, Linux and Mac OS X, MySQL programs read startup options from the following files, in the sp ...

  4. git配置文件读取顺序

    作者:zhanhailiang 日期:2014-11-03 git包括三个配置文件: /etc/gitconfig 文件:系统中对全部用户都普遍适用的配置. 若使用git config 时用' –sy ...

  5. MySQL读取各个my.cnf配置文件的先后顺序是:

    /etc/my.cnf /etc/mysql/my.cnf /usr/local/mysql/etc/my.cnf ~/.my.cnf 其他自定义路径下的my.cnf,例如:/data/mysql/y ...

  6. Linux 登陆配置读取顺序

    Linux用户在登陆到Linux服务器时,一些登陆的提示欢迎信息,以及特定的环境配置等等都按预先设定好的配置来生效.Linux中的这个shell环境会读取很多不同的配置文件来达成上述目的,同时还有登陆 ...

  7. 读配置文件能够保持顺序的 Java Properties 类

    序 前几天,公司项目中有一个需求是读取配置文件的.并且最好可以保证载入到内存中的顺序可以和配置文件里的顺序一致,可是.假设使用 jdk 中提供的 Properties 类的话,读取配置文件后.载入到内 ...

  8. properties配置文件的读取和写入

    /** * 类名:PropertiesUtil * 功能:提供对properties配置文件的读取和写入 * @author ChengTao */package com.xy.xyd.rest.bi ...

  9. struts几个配置文件加载顺序_2015.01.04

    struts几个配置文件加载顺序: 01:struts-default.xml 02:struts-plugin.xml 03:struts.xml 04:struts.properties 05:w ...

随机推荐

  1. 小学四则运算APP 第三阶段冲刺

    <?xml version="1.0" encoding="utf-8"?> <ScrollView xmlns:android=" ...

  2. 小学四则运算APP 第一个冲刺阶段 第六天

    团队成员:陈淑筠.杨家安.陈曦 团队选题:小学四则运算APP 第一次冲刺阶段时间:11.17~11.27 本次发布的是重新排列整齐ResultActivity的布局代码activity_result. ...

  3. 《Multiplayer Game Programming》阅读笔记

    在图书馆发现一本<网络多人游戏架构与编程>-- Joshua Glazer, Sanjay Madhav 著.书挺新的,17年出版的,内容很有趣,翻一翻可以学到不少在<计算机网络&g ...

  4. CMake系列之二:入门案例-单个源文件

    编写一个源码文件 如下 #include<stdio.h> #include<stdlib.h> double power(double base,int exponent) ...

  5. vue props 用法(转载)

    前面的话 组件接受的选项大部分与Vue实例一样,而选项props是组件中非常重要的一个选项.在 Vue 中,父子组件的关系可以总结为 props down, events up.父组件通过 props ...

  6. MapReduce 过程详解

    Hadoop 越来越火, 围绕Hadoop的子项目更是增长迅速, 光Apache官网上列出来的就十几个, 但是万变不离其宗, 大部分项目都是基于Hadoop common MapReduce 更是核心 ...

  7. 为什么要用Thrift

    Why Thrift, Why not HTTP RPC(JSON+gzip) https://stackoverflow.com/questions/9732381/why-thrift-why-n ...

  8. node多文件处理方法

    let events = require('events'); let fs = require('fs'); // 将readfile封装成一个方法 多文件处理  function fnreadFi ...

  9. HMM模型学习笔记(维特比算法)

    维特比算法(Viterbi) 维特比算法  编辑 维特比算法是一种动态规划算法用于寻找最有可能产生观测事件序列的-维特比路径-隐含状态序列,特别是在马尔可夫信息源上下文和隐马尔可夫模型中.术语“维特比 ...

  10. 无返回值的异步方法能否不用await

    1.无返回值的异步方法能否不用await? 如果你不需要等待加一的操作完成,那就可以直接执行后面的操作.那要看你的需求了,如果你后面的操作必须在加一的操作后执行,那就要await了 2.请问C#中如何 ...