news 2026/5/30 15:57:28

Spring Boot项目的配置文件有哪些?加载优先级谁最高?配置优先级谁最高?

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Spring Boot项目的配置文件有哪些?加载优先级谁最高?配置优先级谁最高?

目录

一. 结论

二. .prperties、.yml、.yaml 文件类型简介及注意点

2.1 文件简介

2.2. .prperties(默认格式/传统格式)

2.3 application.yml(主流格式)

2.4 application.yaml(主流格式)

2.5 配置文件注意事项

三. bootstrap.properties、bootstrap.yml、bootstrap.yaml 文件

四. 特殊配置文件 application-{profile}.properties、application-{profile}.properties


一. 结论

结论一:spring boot项目中共有三大类配置文件(也可以说是两大类)

第一类:以 properties 结尾的配置文件,例如 bootstrap.properties、bootstrap.properties;

第二类:以 yml 结尾的配置文件,例如 bootstrap.application、application.yml;

第三类:以 yaml 结尾的配置文件,例如 bootstrap.application、application.yaml;

其实,yml文件和yaml文件没有本质区别,它们都是(YAML Ain't Markup Language)格式的一种文件扩展名的缩写,只是有些人习惯写成 .yml 后缀,而有些人习惯写成 .yaml 后缀,而且,在一个项目中,几乎很少会有 yml 文件和 yaml 文件共存,都是使用同一种,所以我们下面就将它们归于一类。

结论二:

bootstrap.properties/yml 文件的加载顺序最高,通常为系统级别参数;

而application.properties/yml 通常为应用级配置,是有可能会变的;

bootstrap的配置先于application的配置加载,同时.properties的加载又先于.yml的加载,所以配置文件加载顺序为 bootstrap.properties > bpptstrap.yml > application.properties > application.yml

结论三: 多个配置文件共存时,

对于相同属性,配置优先级为 application.properties > application.yml > bootstrap.yml > bootstrap.properties;

对于不同属性时,配置优先级为 bootstrap.properties > bpptstrap.yml > application.properties > application.yml 与加载优先级一致

结论四:"同覆盖,不同加",多个配置文件的属性会呈现相加都生效的效果,但如果遇到同种配置,则配置优先级高的配置文件会覆盖配置优先级低的配置文件;

例子(1)

一个项目中,配置文件 application.yaml 配置项目端口为8080,application.yml配置端口为8081,application.properties文件配置端口为8082,启动项目后,项目实际运行端口为8082。

所以项目实际运行后,运行端口为8082;

例子(2)

再比如,application.yaml 配置 mybatis 框架会略大小写驼峰转换,

application.yml 设置 Redis 地址和端口为127.0.0.1:6389,

application.properties 配置 MySQL 用户名密码为root和123456,

那么最后,这三种配置都会在项目中生效,因为它们不是同属性配置,可以叠加。

二. .prperties、.yml、.yaml 文件类型简介及注意点

2.1 文件简介

Spring Boot 项目最大的优点就是简化了原本 Spring 项目繁重的配置,熟悉Spring Boot项目的小伙伴们应该都听过一句话"约定大于配置",即约定的优先级要高于配置。

在Spring boot项目中,我们做配置只需要使用配置文件即可,配置文件主要有 "application.properties"、"application.yml"、"application.yaml"三种文件

三种文件的优先级为:application.properties > application.yml > application.yaml

通常配置在项目的 resource 文件夹下,正常生效的配置文件,前面会有一个绿色的树叶logo,如果没有,则说明该文件并没有被项目识别为配置文件,里面的配置也是不生效的。

2.2. .prperties(默认格式/传统格式)

properties配置文件格如下所示,格式简单,但是只支持键值对。即属性值="配置值"

此外可以看出,properties 文件属性配置是无序的,但有一些属性是需要有先后顺序的,在一些需要路径匹配的配置中,顺序就显得尤为重要。开发人员很有可能会不小心出现属性顺序配置错误的失误。

因此,就有了我们现在最为常用的主流模式 yml/yaml文件。

2.3 application.yml(主流格式)

如下图,可以看出,在 yml 文件中,属性的配置层级非常明显,简单清晰,并且消除了properties文件中需要配置属性前缀造成的冗余,简洁美观。

例如:spring 和 mybatis 是同一级别的,所以二者就隔绝开;

而 datasource 则是在 spring 的下一级,直接在 datasource 后面敲回车换行配置子属性;

而 datasource 下还有用户名和密码等子属性,再敲回车换行配置这样就防止了开发人员在配置属性顺序是的失误。可读性强,冗余小,是现在极为主流的配置文件;

2.4 application.yaml(主流格式)

和 yml 文件一样,只不过由于各程序猿或者架构师习惯写成 yaml 后缀,语法和 yml 文件完全一样,用法也一样,一般在项目中很少同时出现 yml 和 yaml ,都是使用其中一种后缀名的文件;

如果同时出现,yaml 的读取优先级要高于 ,项目启动时,会先读取 yaml 配置文件,再读取 yml 配置文件。

2.5 配置文件注意事项

(1)在使用 properties 配置文件时,要注意有些属性配置顺序有先后要求;

(2)在使用 yml/yaml 配置文件时,要注意给属性配置属性值时前要空一个空格,如下图所示,黄色划线区域其实都是有一个空格的,如果没有空格会报错;

(3)有些版本的 spring boot 在识别 properties 或 yml/yaml 配置文件时,不允许里面包含注解,如果有注解或解析失败,小伙伴们要注意一下哦!!!

三. bootstrap.properties、bootstrap.yml、bootstrap.yaml 文件

上面这三种文件,可以说是所有配置文件中加载优先级最高的文件了,项目在启动初期会最优先加载此文件,里面通常都是一些项目的通用配置,例如微服务中的服务注册中心和配置中心,公用Redis服务器IP端口,服务器网关各种设置等等。

在 bootstrap 文件中配置过的属性,由于都是项目的通用属性设置,所以在各个微服务子模块中,通常就不会再去做配置。

总之记住一句话:"bootstrap.properties/yml 文件最优先加载,通常为系统级别参数配置,固定参数基本不会更改;而 application.properties/yml 文件后加载,通常配置应用级别参数,可能会更改"。

四. 特殊配置文件 application-{profile}.properties、application-{profile}.properties

在一些大型项目中,或者我们进行公司接触真正的项目之后,通常会发现一个项目中除了上面的集中文件外,还会出现 application-dev.properties,application-prod.properties,application-dev.yml,application-prod.yml 等文件;

如下图所示

这种文件的读取顺序比是相对来说最低的一层。

简单来说,一个项目,有研发阶段,测试阶段,生产阶段,每个阶段的配置文件肯定多多少偏少都是有一点不同的,比如服务器地址,端口等... 那么我们该如何进行丝滑的切换呢?就是通过在 application.properties 或 application.yml 文件中进行设置,二者均可设置。

在 yml 文件中,如下图所示,设置 spring 子属性 profiles 值 active为 local,那么项目在加载完 application.yml 文件之后,就会再去加载 application-local.yml 文件;

在 application.properties 文件中也是一样的,通过键值对的方式即可,

spring.profiles.active=local,即可在项目读取 application.properties 文件后,再去读取 application-local。properties 配置文件

就是通过这些带有 "-dev"(开发使用的配置文件)、"-prod"(项目发布生产的配置文件)以及其它公司内部的各种环境。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/30 15:56:58

5步快速部署AWX:企业级自动化平台实战指南

5步快速部署AWX:企业级自动化平台实战指南 【免费下载链接】awx AWX provides a web-based user interface, REST API, and task engine built on top of Ansible. It is one of the upstream projects for Red Hat Ansible Automation Platform. 项目地址: https…

作者头像 李华
网站建设 2026/5/30 15:53:42

ImageToSTL:从平面到立体的智能浮雕生成方案

ImageToSTL:从平面到立体的智能浮雕生成方案 【免费下载链接】ImageToSTL This tool allows you to easily convert any image into a 3D print-ready STL model. The surface of the model will display the image when illuminated from the left side. 项目地址…

作者头像 李华
网站建设 2026/5/30 15:53:15

告别手动下载镜像!巧用银河麒麟V10自带备份文件,5分钟搞定yum源配置

银河麒麟V10隐藏技巧:5分钟激活预置yum源的高效方案当您第一次接触银河麒麟V10服务器时,是否曾被繁琐的yum源配置流程困扰?传统方法需要下载镜像、挂载ISO、手动创建目录等一系列操作,整个过程至少消耗半小时。但今天我要分享一个…

作者头像 李华
网站建设 2026/5/30 15:53:04

暗黑破坏神2存档编辑器:终极免费工具完全指南

暗黑破坏神2存档编辑器:终极免费工具完全指南 【免费下载链接】d2s-editor 项目地址: https://gitcode.com/gh_mirrors/d2/d2s-editor 你是否厌倦了在暗黑破坏神2中反复刷装备?是否想自定义角色属性来体验不同的游戏玩法?d2s-editor正…

作者头像 李华