关于 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.xdnf.cn/news/7711.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

设备的设计流程和风险评估

为了保证机器的安全性,在机器设计和开发过程中必须降低风险。该过程如下列流程图所示。 风险评估的含义以及如何进行

【MATLAB源码-第209期】基于matlab的MSK调制解调仿真,对比三种解调方法的误码率分别是相干解调,1比特差分,2比特差分。

操作环境: MATLAB 2022a 1、算法描述 最小频移键控(Minimum Shift Keying,简称MSK)是一种特殊的连续相位频移键控(CPFSK),它以其频谱效率高、抗干扰能力强而著称,广泛应用于无线通…

Git 的分支管理

一、分支介绍 1、分支是什么 Git作为一个分布式版本控制系统,提供了强大而灵活的分支管理功能,使得开发团队能够高效地协作开发、管理不同的功能和版本。 2、为什么有分支 一般情况下主分支(master/main)应始终保持可部署的状…

论文速读:简化目标检测的无源域适应-有效的自我训练策略和性能洞察(ECCV2024)

中文标题:简化目标检测的无源域适应:有效的自我训练策略和性能洞察 原文标题:Simplifying Source-Free Domain Adaptation for Object Detection: Effective Self-Training Strategies and Performance Insights 此篇文章为论文速读&#xff…

mac找到主目录下的文件夹

访达-(上方状态栏显示)-然后在

FFmpeg 4.3 音视频-多路H265监控录放C++开发十二:在屏幕上显示多路视频播放,可以有不同的分辨率,格式和帧率。

上图是在安防领域的要求,一般都是一个屏幕上有显示多个摄像头捕捉到的画面,这一节,我们是从文件中读取多个文件,显示在屏幕上。 一 改动UI文件 这里我们要添加两个label,为了区分我们设置一下背景色(这个是…

RK3576 LINUX RKNN SDK 测试

安装Conda工具 安装 Miniforge Conda wget -c https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-Linux-x86_64.sh chmod 777 Miniforge3-Linux-x86_64.sh bash Miniforge3-Linux-x86_64.shsource ~/miniforge3/bin/activate # Miniforge 安装的…

新能源行业必会基础知识-----电力现货市场理论篇-----主目录-----持续更新

新能源行业知识体系-------主目录-----持续更新https://blog.csdn.net/grd_java/article/details/140004020 这本书是2023年出版的,是当下了解国内电力市场最好的途径了。 电力现货市场理论篇 一、电力市场概述1. 电力市场总体架构2. 电力市场模式选择3. 电力市场建…

docker 拉取MySQL8.0镜像以及安装

目录 一、docker安装MySQL镜像 搜索images 拉取MySQL镜像 二、数据挂载 在/root/mysql/conf中创建 *.cnf 文件 创建容器,将数据,日志,配置文件映射到本机 检查MySQL是否启动成功: 三、DBeaver数据库连接 问题一、Public Key Retrieval is not allowed 问题…

#Prompt | AI | LLM # 人类如何写出LLM理解的Prompt

一、如何写好Prompt 结构化Prompt 结构化Prompt是对信息进行组织,使其遵循特定模式和规则,以便于有效理解信息。常用模块包括: Role: 指定角色,使模型聚焦于特定领域。Profile: 包括作者、版本、语言和描述。Goals: 描述Prompt的…

vue计算属性

概念:基于现有的数据,计算出来新属性。并依赖数据的变化,自动重新计算 使用场景: 语法:声明在computed配置项中,一个计算属性对应一个函数,使用起来和普通属性一样使用{{计算属性名}} 代码&…

playground.tensorflow神经网络可视化工具

playground.tensorflow 是一个可视化工具,用于帮助用户理解深度学习和神经网络的基本原理。它通过交互式界面使用户能够构建、训练和可视化简单的神经网络模型。以下是一些主要的数学模型和公式原理,它们在这个平台中被应用: 1. 线性模型 线…

Zabbix监控架构

目录 1. Zabbix监控架构-CS架构 2. Zabbix极速上手指南 主机规划 2.1 部署ngxphp环境并测试 检查安装结果 2.2 部署数据库 2.3 编译安装zabbix-server服务端及后续配置 2.4 部署前端代码代码进行访问 前端的配置文件(连接数据库与主机名等信息) 2.5 欢迎来到zabbix 2…

后台管理系统:登录页

本次项目为后台管理系统,在本系统内第一个页面是登录页面 登录页的各种功能介绍 作为登录页需要具有的功能有:点击登录时记录账户密码,对比账户密码的正确性,提示用户当前状态,登录完成后跳转至首页等功能。 一、网页设…

go语言解决rtsp协议只播放部分的问题(业务问题)

背景 之前不是写过一个项目嘛,就之前有更改过存储对接的项目 go语言对接S3存储的SDK(支持minio和OSS) 这个项目主要的业务是就一个,点播rtsp协议的码流,视频来源在存储服务器上。 这次的问题是rtsp协议只播放部分,需要我们进行排…

移位寄存器设计—FDRE、SRL16E及原语约束

信号处理中,实现数据对齐时,常常对单bit或多bit信号进行打拍操作,这个可以通过移位寄存器实现,SLICEM中的SRL即为移位寄存器。 这里主要记录下不同写法的效果。 1 //同步复位2 module static_multi_bit_sreg_poor #(3 parame…

Linux学习笔记之虚拟机操作

Linux简介 Linux是一种开源、免费的操作系统,其稳定性、安全性、处理多并发得到业界认可。Linux在服务器领域可以说是最强的,并且具有可定制,可裁剪,适用于嵌入式领域的特点。对于linux系统,它最大的的特点就是一切皆…

middleware中间件概述

中间件定义 中间件(middleware)是基础软件的一大类,属于可复用软件的范畴。顾名思义,中间件处在操作系统、网络和数据库之上,应用软件的下层(如图 15-1 所示)​,也有人认为它应该属…

《清宫辞Ⅱ》开机:陈欣予旗装惊艳回归 重新演绎宫闱传奇

演员陈欣予,1993年11月24日出生,多年来在影视剧方面取得了不错的成绩,在演戏的道路上,陈欣予不断挑战自我,凭借对不同角色的塑造,收获好评无数。 11月6日,由北京七耀文化传媒有限公司出品制作&a…

Linux sed命令详解-结构(清楚结构便于理解记忆)-选项-模式空间与暂存区(多示例、多图)

文章目录 sed基本结构选项-n(静默模式)-e、;(多点编辑,多条命令)-f(指定脚本文件)-i(直接修改文件与备份)-E(扩展正则表达式) 常用动作p(print,打印)i(插入内容)与a(追加内容)c、y(替换)d(delete,删除)s(替换) 其他动作l(小写L,打印特殊字符)r(在匹配行后插入指定文件内容)w(将…