【面试题精讲】说一说springboot加载配置文件优先级

2023-09-20 17:29:56

有的时候博客内容会有变动,首发博客是最新的,其他博客地址可能会未同步,认准https://blog.zysicyj.top

首发博客地址

文章更新计划

系列文章地址


Spring Boot 加载配置文件的优先级是根据不同的位置和命名规则来确定的。下面按照优先级从高到低的顺序来介绍:

  1. 命令行参数:通过命令行参数指定的配置会覆盖其他配置。例如,使用--spring.config.name--spring.config.location参数可以指定配置文件的名称和位置。

  2. 操作系统环境变量:Spring Boot 会自动将操作系统环境变量中以SPRING_开头的变量转换为配置属性。例如,将SPRING_APPLICATION_NAME设置为myapp,则可以在配置文件中使用${spring.application.name}来引用该值。

  3. 命令行属性:可以通过-D参数或者--spring.config.name--spring.config.location参数来指定配置文件的名称和位置。

  4. jar 包外部的 application.properties 或 application.yml:如果存在config文件夹,Spring Boot 会加载该文件夹下的application.propertiesapplication.yml文件。

  5. jar 包内部的 application.properties 或 application.yml:如果 jar 包内部存在application.propertiesapplication.yml文件,Spring Boot 会加载该文件。

  6. jar 包内部的 application-{profile}.properties 或 application-{profile}.yml:如果指定了激活的 profile,Spring Boot 会加载对应的application-{profile}.propertiesapplication-{profile}.yml文件。

  7. jar 包外部的 application-{profile}.properties 或 application-{profile}.yml:如果存在config文件夹,Spring Boot 会加载该文件夹下的application-{profile}.propertiesapplication-{profile}.yml文件。

  8. jar 包外部的 application.properties 或 application.yml:如果存在config文件夹,Spring Boot 会加载该文件夹下的application.propertiesapplication.yml文件。

需要注意的是,Spring Boot 会按照上述顺序加载配置文件,后面加载的配置会覆盖前面加载的配置。因此,如果存在多个配置文件,可以通过优先级来控制配置的加载顺序。

另外,Spring Boot 还支持使用@PropertySource注解来加载自定义的配置文件,可以通过value属性指定配置文件的路径。这种方式的优先级介于 jar 包内部和 jar 包外部的配置文件之间。

总结起来,Spring Boot 加载配置文件的优先级从高到低依次为:命令行参数 > 操作系统环境变量 > 命令行属性 > jar 包外部的配置文件 > jar 包内部的配置文件 > jar 包外部的 profile 配置文件 > jar 包内部的 profile 配置文件。

本文由 mdnice 多平台发布

更多推荐

开源项目的版本管理:Git的最佳实践

🌷🍁博主猫头虎带您GotoNewWorld.✨🍁🦄博客首页——猫头虎的博客🎐🐳《面试题大全专栏》文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺🌊《IDEA开发秘籍专栏》学会IDEA常用操作,工作效率翻倍~💐🌊《100天精通Golang(基础入门篇)》学会Golang语言,畅玩云原生,走遍大

【Rust 基础篇】Rust 模式:高效、安全和灵活的匹配工具

导言在编程中,经常需要对数据进行匹配和处理,例如从一个复杂的数据结构中提取特定的值,或者根据不同的情况执行不同的逻辑。Rust是一门现代的系统编程语言,它引入了一种称为"模式"(Pattern)的强大特性,使得数据的匹配和处理变得高效、安全和灵活。本篇博客将深入探讨Rust模式的各种用法,带您领略Rust的魅力。什么是

ES6如何声明一个类?类如何继承?

在JavaScript中,您可以使用关键字class来声明一个类。类是一种模板,用于创建对象的构造函数,其中包含了属性和方法。以下是声明一个类的基本语法:classClassName{constructor(){//构造函数,用于创建对象实例时初始化属性this.propertyName=value;}//方法定义me

stm32学习-芯片系列/选型

【03】STM32·HAL库开发-初识STM32|STM概念、芯片分类、命名规则、选型|STM32原理图设计、看数据手册、最小系统的组成、STM32IO分配_小浪宝宝的博客-CSDN博客STM32:ST是意法半导体,M是MCU/MPU,32是32位。ST累计推出了:5大类、18个系列、1000多个型号的Cortex内核

注入之mssql数据库(手工注入)

sa最高权限(可以获取系统权限)打开一个mssql数据库要拼接一个参数拼接这个参数?xxser=1检查是否是mssql数据库andexists(select*from%20sysobjects)为真是属于mssql查询当前数据库系统的用户名andsystem_user=0(由于版本问题谷歌不可以)可以去虚拟机,爆出系统

基于讯飞人脸算法(调用API进行人脸比对)

先看结果必须遥遥领先基于讯飞人脸算法视频演示所需准备这里我调用了:人脸比对API文档|讯飞开放平台文档中心https://www.xfyun.cn/doc/face/xffaceComparisonRecg/API.html#%E6%8E%A5%E5%8F%A3%E8%AF%B4%E6%98%8E代码里所涉及的APPI

联盟 | Nativex 与 HelpLook 携手助力品牌独立站实现营销增长

近日,汇量科技旗下数字营销平台Nativex与AI知识库搭建工具HelpLook携手合作,共同推动中国跨境卖家和出海开发者的数字营销和客户服务,提供更广阔的增长空间。关于Nativex&HelpLook作为一家全球数字营销平台,Nativex不仅拥有丰富的数字营销经验,还在全球范围内积累了十余年的移动营销专业知识。Na

buuctf-ciscn_s_3

一、srop参考文章-博客园-wudiiv11(作者)-BUUCTF-ciscn_2019_s_3参考文章-博客园-z2yh(作者)-Srop原理与利用方法vlun函数中没有分配栈帧(指rsp没有增长,也没有压入父函数的rbp,这也导致之后的构造payload的时候不需要填充rbp的那8个字节)首先看中间这一栏,要找b

[运维|数据库] mysql的charset与PostgreSQL的encoding

在PostgreSQL数据库中,字符集(charset)的概念与MySQL有所不同。在PostgreSQL中,字符集通常由所谓的"编码"(encoding)来表示。每个数据库都可以使用不同的编码,以适应不同的字符集需求。以下是一些常见的PostgreSQL编码及其对应的MySQL字符集的替代方式:UTF-8(Unico

day31 代码随想录 分发饼干&摆动序列&最大子序和

大纲●理论基础●455.分发饼干●376.摆动序列●53.最大子序和455.分发饼干题目:455.分发饼干//分发饼干//有数组g代表胃口大小,数组s代表饼干大小//求满足最多胃口的值//思路是对gs排序//优先选择最大的饼干满足最大的胃口//[1,2,3][1,1]intfitChildVal(vector<int>

Multitor:一款带有负载均衡功能的多Tor实例创建工具

关于MultitorMultitor是一款带有负载均衡功能的多Tor实例创建工具,Multitor的主要目的是以最快的速度完成大量Tor进程的初始化,并将大量实例应用到我们日常使用的程序中,例如Web浏览器和聊天工具等等。除此之外,在该工具的帮助下,我们还可以在进行渗透测试和对基础设施安全性进行审计时提高隐蔽性和匿名性

热文推荐