关于 spring boot - application.yml 加载顺序

在Spring Boot中,application.yml(或application.properties)配置文件的加载顺序是由Spring Boot的Environment抽象和ConfigFileApplicationListener类共同管理的。这个加载过程涉及多个步骤,包括从多个位置搜索配置文件、合并配置属性以及应用优先级规则。

1、application.yml都可以放置在哪些位置

1.1 项目根目录下的config文件夹中:/config/application.yml

1.2 项目根目录下:/application.yml

1.3 类路径(classpath)下的config文件夹中:classpath:/config/application.yml

1.4 类路径(classpath)下:classpath:/application.yml

2、加载顺序和优先级

2.1 项目根目录下的config文件夹中的application.yml(/config/application.yml-最高优先级)。

2.2 项目根目录下的 /application.yml。(优先级次之)

2.3 类路径(classpath)下的config文件夹中application.yml。

2.4 类路径(classpath)下的 /application.yml(最低优先级)。

根据加载顺序和优先级,项目根目录下的config文件夹中application.yml会被优先加载。如果在这个位置存在配置文件,Spring Boot会首先加载它,并且如果其中有与其他位置的配置文件相同的配置项,它会覆盖其他位置的配置。

3、相关代码解析

3.1 ConfigFileApplicationListeneronApplicationEvent方法

--- 这个方法会在Spring Boot的ApplicationEnvironmentPreparedEvent事件触发时被调用。它负责初始化配置文件加载过程。

3.2 配置文件位置搜索:

--- ConfigFileApplicationListener会调用ConfigFileLocationResolver来解析配置文件的位置。ConfigFileLocationResolver会根据前面提到的搜索位置规则来生成可能的配置文件路径列表。

3.3 配置文件加载

--- 一旦确定了配置文件的位置,ConfigFileApplicationListener会使用PropertySourceLoader来加载这些文件。对于YAML文件,会使用YamlPropertySourceLoader

3.4 属性合并

--- 加载的配置文件会被转换成PropertySource对象,并添加到Spring的Environment中。Spring的Environment是一个抽象,它允许你访问应用程序的属性,包括系统属性、环境变量、命令行参数以及配置文件中的属性。

3.5 优先级应用

--- 在添加PropertySourceEnvironment时,后添加的PropertySource会覆盖先前添加的同名属性。因此,根据加载顺序,优先级高的配置文件中的属性会覆盖优先级低的配置文件中的同名属性。

4、注意事项

3.1 如果在同一个目录下同时存在application.ymlapplication.properties文件,Spring Boot会默认先读取application.properties文件。但是,建议在同一项目中尽量统一使用一种配置文件格式(ymlproperties),以避免潜在的配置冲突和混淆。

3.2 可以通过命令行参数--spring.config.location来指定额外的配置文件位置,这些指定的配置文件具有最高的优先级。但是,使用这种方式指定的配置文件不会与默认位置的配置文件形成互补配置;如果需要互补配置,可以使用--spring.config.additional-location参数。

3.3 在Spring Boot 2.0及以上版本中,使用spring.config.location参数时,Spring Boot只会加载指定的配置文件,而不会加载默认位置的配置文件。因此,在使用该参数时需要谨慎。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/60426.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

腾讯云双十一重磅福利----下一代CDN-EdgeOne

🍋引言 随着全球互联网的快速发展和网络安全威胁的不断升级,传统的内容分发网络(CDN)已逐渐无法满足高效、安全、灵活的需求。腾讯云的下一代CDN产品—EdgeOne应运而生,凭借其全球化边缘节点架构,为客户提供…

Unity Coroutine

调用函数时,函数将运行到完成状态,然后返回。这实际上意味着在函数中发生的任何动作都必须在单帧更新内发生;函数调用不能用于包含程序性动画或随时间推移的一系列事件。例如,假设需要逐渐减少对象的 Alpha(不透明度&a…

qt QGraphicsProxyWidget详解

1. 概述 QGraphicsProxyWidget 类是 Qt 图形视图框架中的一个关键类,它允许 QWidget 组件被嵌入到 QGraphicsScene 中。QGraphicsProxyWidget 作为一个代理,它在 QGraphicsScene 和 QWidget 之间建立了桥梁,使得 QWidget 可以在 QGraphicsVi…

【数据集】GPM IMERG Daily Precipitation Dataset

目录 数据集概述时空分辨率:数据下载参考数据集概述 Global Precipitation Measurement (GPM) IMERG Daily Precipitation Dataset 简介 Global Precipitation Measurement (GPM) 是由美国国家航空航天局(NASA)和日本宇宙航空研究开发机构(JAXA)联合发起的一项全球降水观…

MySQL 迁移 dm

参考链接 此处为语雀内容卡片,点击链接查看:MySQL 5.7.27 迁移 DM 8 语雀 迁移前准备 以下中的命名,密码都是可修改的,这里给出的就只是一个例子 创建表空间 # 创建表空间名为 dbTest,路径为 Z:\fei\data\dm\dbT…

新版IJidea 如何打开数据库窗口(2024.2.4 版)(连接数据库)

新版IJidea 2024.2.4 如何打开数据库窗口? 方式:使用插件,Database Navigator 1.安装插件,步骤如下: 打开 Settings/Preferences 对话框(快捷键 CtrlAltS)。前往 Plugins 菜单项。在搜索框中…

MySQL:left join后用on与where的区别

一、前言 前几天项目中,写SQL时本想通过 A left B join on and 后面的条件来使查出的两条记录变成一条,奈何发现还是有两条。在此记录一下,on与where的区别。 二、ON 原始数据展示 SELECT t1.*,t2.* FROM t_test_staff t1 left join t_te…

Spark 核心概念与宽窄依赖的详细解析

Spark 的介绍与搭建:从理论到实践_spark环境搭建-CSDN博客 Spark 的Standalone集群环境安装与测试-CSDN博客 PySpark 本地开发环境搭建与实践-CSDN博客 Spark 程序开发与提交:本地与集群模式全解析-CSDN博客 Spark on YARN:Spark集群模式…

【树莓派raspberrypi烧录Ubuntu远程桌面登入树莓派】

提示:本文利用的是Ubuntu主机和树莓派4B开发板,示例仅供参考 文章目录 一、树莓派系统安装下载前准备工作下载安装树莓派的官方烧录软件imagerimager的使用方法 二、主机与树莓SSH连接查看数梅派IP地址建立ssh连接更新树莓派源地址 三、主机端远程桌面配…

MySQL数据库专栏(四)MySQL数据库链接操作C#篇

摘要 本篇文章主要介绍C#链接MySQL数据库的接口介绍,使用实例及注意事项,辅助类的封装及调用实例,可以直接移植到项目里面使用。 目录 1、添加引用 2、接口介绍 2.1、MySqlConnection 2.2、MySqlCommand 2.3、MySqlDataReader…

百度世界2024:AI应用的浪潮时刻

百度AI公式:“技术商业社会”。 作者|金豫 编辑|杨舟 互联网行业正迈入增长瓶颈期,这一点从主要科技巨头,如Meta、Alphabet、腾讯等近年来的表现中可见端倪:广告收入增速放缓,市场渗透率接近饱和。 单纯依赖流量获取…

Linux 通过nmcli配置网络并配置bond(网卡绑定)

Linux 通过nmcli配置网络并配置bond Linux 通过nmcli配置网络并配置bond1. 什么是 Bond 网卡绑定2. Bond 网卡绑定的常见模式3. 通过nmcli配置网络并做网卡绑定 Linux 通过nmcli配置网络并配置bond 1. 什么是 Bond 网卡绑定 Bond 网卡绑定(或 NIC Bonding&#xff…

【Stable Diffusion - Ai】小白入门必看(想控制AI的绘画结果?ControlNet 预处理篇)!真材实料!不卖课!!!

【Stable Diffusion - Ai】小白入门必看(想控制AI的绘画结果?ControlNet 预处理篇)!真材实料!不卖课!!! 对于ControlNet来说,很多人都会感觉到陌生;这个插件…

几何合理的分片段感知的3D分子生成 FragGen - 评测

FragGen 来源于 2024 年 3 月 25 日 预印本的文章,文章题目是 Deep Geometry Handling and Fragment-wise Molecular 3D Graph Generation, 作者是 Odin Zhang,侯廷军,浙江大学药学院。FragGen 是一个基于分子片段的 3D 分子生成模…

【设计模式系列】享元模式(十五)

目录 一、什么是享元模式 二、享元模式的角色 三、享元模式的典型应用场景 四、享元模式在ThreadPoolExecutor中的应用 1. 享元对象(Flyweight)- 工作线程(Worker) 2. 享元工厂(Flyweight Factory)- …

为什么分布式光伏规模是6MW为界点

安科瑞 华楠 近日,能源局发布定义分布式光伏6MW及以上的光伏电站必须自发自用,自行消纳。多省能源局规定大于6MW的电站必须按集中式管理,另外大于6MW(包含)要省级审批,小于则由市级审批,10kV线…

RDD 算子全面解析:从基础到进阶与面试要点

Spark 的介绍与搭建:从理论到实践_spark环境搭建-CSDN博客 Spark 的Standalone集群环境安装与测试-CSDN博客 PySpark 本地开发环境搭建与实践-CSDN博客 Spark 程序开发与提交:本地与集群模式全解析-CSDN博客 Spark on YARN:Spark集群模式…

四万字长文SpringBoot、Spring、SpringMVC等相关面试题(注:该篇博客将会持续维护 最新维护时间:2024年11月12日)

🧸本篇博客重在讲解SpringBoot、Spring、SpringMVC等相关面试题,将会实时更新,欢迎大家添加作者文末联系方式交流 📜JAVA面试题专栏:JAVA崭新面试题——2024版_dream_ready的博客-CSDN博客 📜作者首页&…

02_ElementUI

一.前端工程化 1.1 概述 前端工程化是使用软件工程的方法来单独解决前端的开发流程 中模块化、组件化、规范化、自动化的问题,其主要目的为了 提高效率和降低成本。 1.2 NodeJS的安装 Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行时环 境,可以使 JavaS…

三、运算符、数据类型转换(显式、隐式)、语句(if、三元、switch、while、for)

1. 运算符 1.1 自增自减 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title> &…