配置文件优先级解读

目录

概述

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

相关推荐
hhb_6188 小时前
Dylan 语言核心特性与工程实践深度解析
开发语言·c#
无巧不成书02189 小时前
零基础Java网络编程全解:从核心概念到Socket实战,一文打通Java网络通信
java·开发语言·网络
饭小猿人9 小时前
Flutter实现底部动画弹窗有两种方式
开发语言·前端·flutter
weixin_520649879 小时前
数据库函数
数据库
aq55356009 小时前
Workstation神技:一键克隆调试环境
java·开发语言
lly2024069 小时前
框架:构建高效系统的基石
开发语言
Bert.Cai10 小时前
MySQL LPAD()函数详解
数据库·mysql
skywalk816310 小时前
发现Kotti项目的python包Beaker 存在安全漏洞
开发语言·网络·python·安全
今天你TLE了吗10 小时前
LLM到Agent&RAG——AI知识点概述 第六章:Function Call函数调用
java·人工智能·学习·语言模型·大模型
Rcnhtin10 小时前
RocketMQ
java·linux·rocketmq