1、springboot启动会扫描以下位置的application.properties或者application.yml文件作为SpringBoot的默认配置文件
--file:/config/ --file:/ --classpath:/config/ --classpath:/
优先级由高到低,高优先级的配置会覆盖低优先级的配置;
SpringBoot会从这个四个位置全部加载住配置文件;互补配置;
我们还可以通过spring.config.location来改变默认的配置文件位置
项目打包好以后,我们可以使用命令行参数的行驶,启动项目的时候来指定配置文件的新位置;指定的配置文件和默认加载的这些配置文件共同起作用形成互补配置
2、外部配置加载顺序
SpringBoot支持多种外部配置方式
这些方式优先级如下:
https://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/htmlsingle/#boot-features-external-config
SpringBoot也可以从以下位置加载配置;优先级从高到低;高优先级的配置覆盖低优先级的配置,所有的配置会行成互补配置;
1.命令行参数
2.来自java:comp/env的JNDI属性
3.Java系统属性(System.getProperties())
4.操作系统环境变量
5.RandomValuePropertySource配置的random.*属性值
6.jar包 外部的application-{profile}.properties或application.yml(带spring.profile)配置文件
7..jar包 内部的application-{profile}.properties或application.yml(带spring.profile)配置文件
8..jar包 外部的application.properties或application.yml(不带spring.profile)配置文件
9.jar包 内部的application.properties或application.yml(不带spring.profile)配置文件
[email protected]注解类上的@PropertySource
11.通过SpringApplication.setDefaultProperties指定的默认属性
3、SpringBoo配置-自动配置原理
精髓:
1)、SpringBoot启动会加载大量的自动配置类
2)、我们看我们需要的功能有没有SpringBoot默认写好的自动配置类;
3)、我们再来看这个自动配置类中到底配置了哪些组件;(只要我们要用的组件有,我们不需要再来配置了)
4)、给容器中自动配置类添加组件的时候,会从properties类当中获取某些属性,我们就可以在 配置文件中指定这些属性的值;
xxxAutoConfiguration:自动配置类;
给容器中添加组件
xxxProperties:封装配置文件中相关属性;
4、自动配置类必须在一定的条件下才能生效;
我们怎么知道哪些自动配置类生效;
我们可以通过启用debug:true属性;来让控制台打印 自动配置报告,这样我们就可以很方便的知道哪些自动配置类生效;
原文地址:https://www.cnblogs.com/cykj/p/SpringBoot-configfile.html