【面试题精讲】说一说springboot加载配置文件优先级
有的时候博客内容会有变动,首发博客是最新的,其他博客地址可能会未同步,认准
https://blog.zysicyj.top
Spring Boot 加载配置文件的优先级是根据不同的位置和命名规则来确定的。下面按照优先级从高到低的顺序来介绍:
命令行参数:通过命令行参数指定的配置会覆盖其他配置。例如,使用
--spring.config.name和--spring.config.location参数可以指定配置文件的名称和位置。操作系统环境变量:Spring Boot 会自动将操作系统环境变量中以
SPRING_开头的变量转换为配置属性。例如,将SPRING_APPLICATION_NAME设置为myapp,则可以在配置文件中使用${spring.application.name}来引用该值。命令行属性:可以通过
-D参数或者--spring.config.name和--spring.config.location参数来指定配置文件的名称和位置。jar 包外部的 application.properties 或 application.yml:如果存在
config文件夹,Spring Boot 会加载该文件夹下的application.properties或application.yml文件。jar 包内部的 application.properties 或 application.yml:如果 jar 包内部存在
application.properties或application.yml文件,Spring Boot 会加载该文件。jar 包内部的 application-{profile}.properties 或 application-{profile}.yml:如果指定了激活的 profile,Spring Boot 会加载对应的
application-{profile}.properties或application-{profile}.yml文件。jar 包外部的 application-{profile}.properties 或 application-{profile}.yml:如果存在
config文件夹,Spring Boot 会加载该文件夹下的application-{profile}.properties或application-{profile}.yml文件。jar 包外部的 application.properties 或 application.yml:如果存在
config文件夹,Spring Boot 会加载该文件夹下的application.properties或application.yml文件。
需要注意的是,Spring Boot 会按照上述顺序加载配置文件,后面加载的配置会覆盖前面加载的配置。因此,如果存在多个配置文件,可以通过优先级来控制配置的加载顺序。
另外,Spring Boot 还支持使用@PropertySource注解来加载自定义的配置文件,可以通过value属性指定配置文件的路径。这种方式的优先级介于 jar 包内部和 jar 包外部的配置文件之间。
总结起来,Spring Boot 加载配置文件的优先级从高到低依次为:命令行参数 > 操作系统环境变量 > 命令行属性 > jar 包外部的配置文件 > jar 包内部的配置文件 > jar 包外部的 profile 配置文件 > jar 包内部的 profile 配置文件。
本文由mdnice多平台发布
【面试题精讲】说一说springboot加载配置文件优先级的更多相关文章
- Springboot 加载配置文件源码分析
Springboot 加载配置文件源码分析 本文的分析是基于springboot 2.2.0.RELEASE. 本篇文章的相关源码位置:https://github.com/wbo112/blogde ...
- springboot(五) 加载配置文件优先级顺序
github代码地址:https://github.com/showkawa/springBoot_2017/tree/master/spb-demo/spb-brian-query-service ...
- SpringBoot加载配置文件(@PropertySource@importSource@Value)
情景描述 最近新搭建了一个项目,从Spring迁到了Springboot,为了兼容Spring加载配置文件的风格,所以还想把PropertyPlaceholderConfigurer放在.xml文件里 ...
- SpringBoot 加载配置文件
1.application.properties或application.yaml是SpringBoot默认的配置文件. 可以通过@Value注解 配合 ${......}来读取配置在属性文件中的内容 ...
- SpringBoot加载配置文件的几种方式
首先回忆一下在没有使用SpringBoot之前也就是传统的spring项目中是如何读取配置文件,通过I/O流读取指定路径的配置文件,然后再去获取指定的配置信息. 传统项目读取配置方式 读取xml配置文 ...
- SpringBoot是如何加载配置文件的?
前言 本文针对版本2.2.0.RELEASE来分析SpringBoot的配置处理源码,通过查看SpringBoot的源码来弄清楚一些常见的问题比如: SpringBoot从哪里开始加载配置文件? Sp ...
- springboot属性类自动加载配置文件中的值
springboot属性类自动加载配置文件中的值,如Person类加载在yml中配置的name,age等属性值,可以通过如下步骤获取: 类上添加@ConfigurationProperties注解,p ...
- SpringBoot加载子模块配置文件的方法
这两天开始学习SpringBoot框架,按照官方的文档,很轻易地就把单模块的项目启动了,但在使用maven搭建多模块的时候遇到了子模块配置文件没有加载的问题 项目架构是这样的 zero |-ws |- ...
- springboot加载外部配置文件
网上搜集和整理如下(自己已验证过) 1. war包在tomcat中加载外部配置文件 war包运行在独立tomcat下时,如何加载war包外部配置application.properties,以达到每次 ...
- SpringBoot加载相关注解
springBoot加载 @Configuration 表明该类是一个配置类常常配合@Bean使用,让容器管理对象 @Configuration(proxyBeanMethods = true) pr ...
随机推荐
- ElasticSearch之Slow Log
ElasticSearch的慢日志,相关的参数及配置方法. 在log4j2.properties中配置慢日志的输出文件名. Search Slow Log 相关参数 index.search.slow ...
- SPSC Queue
在多线程编程中,一个著名的问题是生产者-消费者问题 (Producer Consumer Problem, PC Problem). 对于这类问题,通过信号量加锁 (https://www.cnblo ...
- 去年最火的 JS 开源项目「GitHub 热点速览」
近日,「Best of JS」发布了过去一年在 GitHub 上 Star 数增速最快的 JavaScript 开源项目(2023 JavaScript Rising Stars),前 10 的开源项 ...
- DevOps常用工具全家桶,实现高效运维和交付
DevOps常用工具全家桶,实现高效运维和交付 1.DevOps发展 DevOps发展背景: 随着互联网技术的快速发展,软件开发和运维的挑战也日益增加.传统的软件开发和运维模式往往存在分离.效率低下. ...
- Mybatis源码1JDBC->mybatis主要流程->mybatis Excutor简介
=== 一丶mybatis概述 MyBatis 是一款优秀的持久层框架,它支持自定义 SQL.存储过程以及高级映射.MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作.My ...
- 华为云MVP程云:知识化转型,最终要赋能一线
摘要:如今的智能语音助手,可以帮助我们完成日常生活中的一些常规动作.同样,在企业中,智能问答机器人也在扮演着同样的角色. 本文分享自华为云社区<[亿码当先,云聚金陵]华为云MVP程云:知识化转型 ...
- 原来的 service 命令与 systemctl 命令对比
service [服务] start systemctl start [unit type] 启动服务 #启动网络服务 systemctl start network.servicese ...
- 低门槛上手快!火山引擎 VeDI 这样满足数据分析新需求
更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 近日,市场研究机构 IDC 发布<2022 年 V2 全球大数据支出指南>. 数据显示,2021 ...
- .Net Core NLog 配置
using NLog; private static Logger logger = LogManager.GetCurrentClassLogger(); //初始化日志类 NLog.config ...
- OpenFeign FormData
服务端接口代码如下: /** * 上传数据+实体信息 */ @RequestMapping("/upload") public String doctorAnalysis(Http ...