配置文件优先级解读

目录

概述

同级目录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指定的默认属性

相关推荐
人活一口气14 小时前
Spring Boot与AIGC的完美结合:从零搭建智能内容生成平台
java·spring boot·aigc
SelectDB15 小时前
阶跃星辰基于 SelectDB 构建 PB 级 Agent 可观测平台
大数据·数据库·aigc
这个DBA有点耶16 小时前
GROUP BY优化全解:如何写出既不丢数据又飞快的分组查询
数据库·mysql·架构
像我这样帅的人丶你还16 小时前
Java 后端详解(三):全局异常处理与 JPA 数据库映射
java·后端
NE_STOP16 小时前
vibe Coding -- 小项目实战
java
掉头发的王富贵19 小时前
【StarRocks】极限十分钟入门StarRocks
数据库·sql·mysql
Nturmoils19 小时前
WHERE 条件别凭习惯写,常用查询先跑一遍
数据库
未秃头的程序猿1 天前
Java 26正式发布!这3个新特性,让代码量直接减半
java·后端·面试
用户298698530141 天前
Word 文档文本查找与替换的 Java 实现方案
java·后端
阿哉1 天前
Nacos 服务发现源码:藏在背后的两套事件机制,90%的人只讲了一半
java