配置文件优先级解读

目录

概述

同级目录application配置文件优先级

[application 以及bootstrap 优先级](#application 以及bootstrap 优先级)

不同级目录配置文件优先级

外部配置加载顺序


概述

SpringBoot除了支持properties格式的配置文件,还支持另外两种格式的配置文件。三种配置文件格式分别如下:

  • properties格式

  • yml格式

  • yaml格式

application.properties(properties格式)

server.port=80

application.yml(yml格式)

server:
  port: 81

application.yaml(yaml格式)

server:
  port: 82

yml和yaml文件格式就是一模一样的,只是文件后缀不同,所以可以合并成一种格式来看。

  1. yaml语法规则

    • 大小写敏感

    • 属性层级关系使用多行描述,每行结尾使用冒号结束

    • 使用缩进表示层级关系,同层级左侧对齐,只允许使用空格(不允许使用Tab键)

    • 属性值前面添加空格(属性名与属性值之间使用冒号+空格作为分隔)

    • #号 表示注释

  2. 注意属性名冒号后面与数据之间有一个空格

  3. 字面值、对象数据格式、数组数据格式

同级目录application配置文件优先级

application.properties > application.yml > application.yaml

每个配置文件中的项都会生效,只不过如果多个配置文件中有相同类型的配置会优先级高的文件覆盖优先级的文件中的配置。如果配置项不同的话,所有的配置项都会生效。

application 以及bootstrap 优先级

bootstrap 优先于application加载, 用于应用程序上下文的引导阶段。由spring cloud BootstrapApplicationListenerApplicationEnvironmentPreparedEvent时进行加载。

可以将bootstrap配置理解为系统级别的参数配置,这些参数一般不会变更。

application 配置可以理解为定义应用级别的参数,可以覆盖替换bootstrap的配置信息。

application的属性优先较高,加载时先加载bootstrap配置文件,再加载application配置文件

不同级目录配置文件优先级

加载1. classpath:/ -- 优先级4. The classpath root

加载2. classpath:/config/ -- 优先级3. A classpath /config package

加载3. file:./ -- 优先级2. The current directory

加载4. file:./config/ -- 优先级1. A /config subdirectory of the current directory.

外部配置加载顺序

SpringBoot也可以从以下位置加载配置:

优先级从高到低;

高优先级的配置覆盖低优先级的配置,所有的配置会形成互补配置。

1.命令行参数

所有的配置都可以在命令行上进行指定;多个配置用空格分开; --配置项=值

java -jar spring-boot-02-config-02-0.0.1-SNAPSHOT.jar

--server.port=8087 --server.context-path=/abc

2.来自java:comp/env的JNDI属性

3.WDpUhJava系统属性(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.profihttp://le)配置文件

9.jar包内部的application.properties或application.yml(不带spring.profile)配置文件

由jar包外向jar包内进行寻找,优先加载带profile的,再加载不带profile的。

10.@Configuration注解类上的@PropertySource

11.通过SpringApplication.setDefaultProperties指定的默认属性

相关推荐
Xxxx. .Xxxx1 分钟前
C语言程序设计实验与习题指导 (第4版 )课后题-第二章+第三章
java·c语言·开发语言
姜西西_2 分钟前
[Spring]Spring MVC 请求和响应及用到的注解
java·spring·mvc
逸狼3 分钟前
【JavaEE初阶】多线程6(线程池\定时器)
java·开发语言·算法
qq_35323353894 分钟前
【原创】java+springboot+mysql科研成果管理系统设计与实现
java·spring boot·mysql·mvc·web
dawn1912285 分钟前
SpringMVC 入门案例详解
java·spring·html·mvc
极客先躯6 分钟前
高级java每日一道面试题-2024年9月16日-框架篇-Spring MVC和Struts的区别是什么?
java·spring·面试·mvc·struts2·框架篇·高级java
Counter-Strike大牛7 分钟前
MySQL迁移达梦报错,DMException: 第1 行附近出现错误: 无效的表或视图名[ACT_GE_PROPERTY]
java·数据库
我要学编程(ಥ_ಥ)1 小时前
滑动窗口算法专题(1)
java·数据结构·算法·leetcode
niceffking1 小时前
JVM 一个对象是否已经死亡?
java·jvm·算法
薛文旺2 小时前
c++可视化打印树
开发语言·c++