Spring Cloud Config加载机制

SpringBoot属性文件命名
bootstrap.yml
(1)bootstrap配置文件中的配置一般是引导配置,类似于bios,用于连接到spring cloud配置中心,加载应用真正需要的配置数据,如:

spring.application.name 和 spring.cloud.config.server.git.uri

(2)配置一些固定的不能被覆盖的属性,默认情况下,本地的配置文件不能覆盖远程配置

(3)配置加密解密外部配置信息的相关属性

application.application/yml
spring boot项目的自动化配置

spring boot项目中同一个目录下同时存在application.properties和application.yml文件时,两个文件都有效,但是yml文件会先加载,而后加载的properties文件会覆盖yml文件。

bootstrap 由spring父上下文加载,比application配置文件优先加载,而application配置文件由子上下文加载, bootstrap加载的配置信息不能被application的相同配置覆盖

多profile文件配置
可以采用多profile文件区别不同环境的配置

application-{profile}.properties/yml,默认采用application.properties的配置

激活profile的方式

  1. 在配置文件指定 spring.profiles.active=dev

这里支持spring.profiles.active=dev,dev1,dev多个配置,配置优先级待确定

  1. 启动命令添加

java -jar spring-boot-02-config-0.0.1-SNAPSHOT.jar --spring.profiles.active=dev
3. 虚拟机参数

-Dspring.profiles.active=dev

配置位置加载优先级
springboot 启动会扫描以下位置的application.properties或者application.yml文件作为Spring boot的默认配置文件

优先级从高到低:

–file:./config/
–file:./
–classpath:/config/
–classpath:/
image.png

项目打包好以后,我们可以使用命令行参数的形式,启动项目的时候来指定配置文件的新位置;指定配置文件和默认加载的这些配置文件共同起作用形成互补配置

我们还可以通过spring.config.location来改变默认的配置文件位置,示例:

java -jar spring-boot-demo-0.0.1-SNAPSHOT.jar --spring.config.location=G:/application.properties

总结
Spring Cloud应用加载的配置项可以来自于以下几个位置:

启动命令中指定的配置项;
  操作系统配置项;
  环境变量
  配置中心中的配置文件;

  本地boostrap.properties(yml)  

  本地的application.properties(yml)

这几个位置的配置项从上往下优先级递减,即从上面位置加载的配置项会覆盖下面位置加载的配置项。如application.properties中加载的配置项优先级要高于bootstrap.properties中加载的配置项

https://docs.spring.io/spring-boot/docs/2.1.0.RELEASE/reference/htmlsingle/#using-boot-configuration-classes

猜你喜欢

转载自blog.csdn.net/hugenshen/article/details/123190462