有的时候博客内容会有变动,首发博客是最新的,其他博客地址可能会未同步,认准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多平台发布

【面试题精讲】说一说springboot加载配置文件优先级的更多相关文章

  1. Springboot 加载配置文件源码分析

    Springboot 加载配置文件源码分析 本文的分析是基于springboot 2.2.0.RELEASE. 本篇文章的相关源码位置:https://github.com/wbo112/blogde ...

  2. springboot(五) 加载配置文件优先级顺序

    github代码地址:https://github.com/showkawa/springBoot_2017/tree/master/spb-demo/spb-brian-query-service ...

  3. SpringBoot加载配置文件(@PropertySource@importSource@Value)

    情景描述 最近新搭建了一个项目,从Spring迁到了Springboot,为了兼容Spring加载配置文件的风格,所以还想把PropertyPlaceholderConfigurer放在.xml文件里 ...

  4. SpringBoot 加载配置文件

    1.application.properties或application.yaml是SpringBoot默认的配置文件. 可以通过@Value注解 配合 ${......}来读取配置在属性文件中的内容 ...

  5. SpringBoot加载配置文件的几种方式

    首先回忆一下在没有使用SpringBoot之前也就是传统的spring项目中是如何读取配置文件,通过I/O流读取指定路径的配置文件,然后再去获取指定的配置信息. 传统项目读取配置方式 读取xml配置文 ...

  6. SpringBoot是如何加载配置文件的?

    前言 本文针对版本2.2.0.RELEASE来分析SpringBoot的配置处理源码,通过查看SpringBoot的源码来弄清楚一些常见的问题比如: SpringBoot从哪里开始加载配置文件? Sp ...

  7. springboot属性类自动加载配置文件中的值

    springboot属性类自动加载配置文件中的值,如Person类加载在yml中配置的name,age等属性值,可以通过如下步骤获取: 类上添加@ConfigurationProperties注解,p ...

  8. SpringBoot加载子模块配置文件的方法

    这两天开始学习SpringBoot框架,按照官方的文档,很轻易地就把单模块的项目启动了,但在使用maven搭建多模块的时候遇到了子模块配置文件没有加载的问题 项目架构是这样的 zero |-ws |- ...

  9. springboot加载外部配置文件

    网上搜集和整理如下(自己已验证过) 1. war包在tomcat中加载外部配置文件 war包运行在独立tomcat下时,如何加载war包外部配置application.properties,以达到每次 ...

  10. SpringBoot加载相关注解

    springBoot加载 @Configuration 表明该类是一个配置类常常配合@Bean使用,让容器管理对象 @Configuration(proxyBeanMethods = true) pr ...

随机推荐

  1. ElasticSearch之Slow Log

    ElasticSearch的慢日志,相关的参数及配置方法. 在log4j2.properties中配置慢日志的输出文件名. Search Slow Log 相关参数 index.search.slow ...

  2. SPSC Queue

    在多线程编程中,一个著名的问题是生产者-消费者问题 (Producer Consumer Problem, PC Problem). 对于这类问题,通过信号量加锁 (https://www.cnblo ...

  3. 去年最火的 JS 开源项目「GitHub 热点速览」

    近日,「Best of JS」发布了过去一年在 GitHub 上 Star 数增速最快的 JavaScript 开源项目(2023 JavaScript Rising Stars),前 10 的开源项 ...

  4. DevOps常用工具全家桶,实现高效运维和交付

    DevOps常用工具全家桶,实现高效运维和交付 1.DevOps发展 DevOps发展背景: 随着互联网技术的快速发展,软件开发和运维的挑战也日益增加.传统的软件开发和运维模式往往存在分离.效率低下. ...

  5. Mybatis源码1JDBC->mybatis主要流程->mybatis Excutor简介

    === 一丶mybatis概述 MyBatis 是一款优秀的持久层框架,它支持自定义 SQL.存储过程以及高级映射.MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作.My ...

  6. 华为云MVP程云:知识化转型,最终要赋能一线

    摘要:如今的智能语音助手,可以帮助我们完成日常生活中的一些常规动作.同样,在企业中,智能问答机器人也在扮演着同样的角色. 本文分享自华为云社区<[亿码当先,云聚金陵]华为云MVP程云:知识化转型 ...

  7. 原来的 service 命令与 systemctl 命令对比

    service [服务] start       systemctl start [unit type] 启动服务 #启动网络服务  systemctl start network.servicese ...

  8. 低门槛上手快!火山引擎 VeDI 这样满足数据分析新需求

      更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 近日,市场研究机构 IDC 发布<2022 年 V2 全球大数据支出指南>. 数据显示,2021 ...

  9. .Net Core NLog 配置

    using NLog; private static Logger logger = LogManager.GetCurrentClassLogger(); //初始化日志类 NLog.config ...

  10. OpenFeign FormData

    服务端接口代码如下: /** * 上传数据+实体信息 */ @RequestMapping("/upload") public String doctorAnalysis(Http ...