springcloud的配置文件的读取顺序

摘要:
默认情况下,SpringBoot支持属性和YAML格式的配置文件。SpringBoot支持自动加载带有合约名称的配置文件,例如application.yml。独自创立yml先于应用程序典型的应用程序场景如下:使用SpringCloudConfigServer时,应指定spring.application。name和spring.cloud.config.server.git。引导程序中的uri。yml和一些加密/解密信息技术,bootstrap。yml由父SpringApplicationContext加载。首先加载父级SpringApplicationContext,然后在yml的ApplicationContext之前加载应用程序。使用SpringCloud时,配置信息通常从configserver加载。为了获得配置信息,您需要一些早期或引导配置。

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访问的方式:

springcloud的配置文件的读取顺序第1张

(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仓库的名称建立一个对应关系,这样子可以采用通配符的方式

springcloud的配置文件的读取顺序第2张

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

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

springcloud的配置文件的读取顺序第3张

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

springcloud的配置文件的读取顺序第4张

免责声明:文章转载自《springcloud的配置文件的读取顺序》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇顺丰丰桥软件开发工具包 (.NET)electron制作上位机软件篇(一):编译安装serialport下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

thinkphp 5 整理笔记

初始化操作initialize 1 //会优先执行该函数 2 public functioninitialize() 3 { 4 echo 'initialize'; 5 } 前置操作 1 protected $beforeActionList =[ 2 //只执行test的时候会执行test1函数 3 //'tes...

线上Redis高并发连接失败问题排查

项目背景  最近,做一个按优先级和时间先后排队的需求。用 Redis 的 sorted set 做排队队列。   主要使用的 Redis 命令有, zadd, zcount, zscore, zrange 等。   测试完毕后,发到线上,发现有大量接口请求返回超时熔断(超时时间为3s)。   Error日志打印的异常堆栈为:     redis.clien...

SpringBoot集成Nacos

SpringBoot集成Nacos 1、SpringBoot集成Nacos 2、Nacos配置 2.1 命名空间 2.2 资源配置 2.2.1 Data ID 2.2.2 Group 2.2.3 Namespace 2.2.4 配置内容 2.3 配置操作 2.3.1 历史版本 2.3.2 监听查询 3、扩展配置注意事项 3.1 客户端配置...

【学习总结】快速上手Linux玩转典型应用-第5章-远程连接SSH专题

课程目录链接 快速上手Linux玩转典型应用-目录 目录 1. 认识SSH 2. 服务器安装SSH服务 3. 客户端安装SSH工具 4. 客户端链接SSH服务 5. SSH config 6. SSH免密登录 ============================================================== =====...

Unity3d在Android环境下读取XML的注意事项

PC环境下读取一般可以直接用 XmlDocument doc = new XmlDocument(); doc.Load(path);可以直接加载进来。 path为直接路径。 此时路径可以为streamingAssets文件夹下,也可以是自己自建的文件夹下面,如果是你自己建的文件夹下打包后需要手动添加一下,就是说比如你自己在Assets文件下新建了一个Co...

docker挂载单文件问题

关于docker中文件夹挂载成功 但是单文件挂载却没有生效的问题 因为用vim修改这里会有一个坑 docker -v mount 的机制:-v mount 文件(或文件夹)时,docker 记录的是该文件的 inode,并用 inode 追踪。当用 vim 编辑了文件后,这个文件的 inode 就变了,也就是说这个 default.conf 文件已经不是运...