【面试题精讲】说一说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 ...
随机推荐
- JAVAAPI实现血缘关系Rest推送到DataHub V0.12.1版本
DataHub 更青睐于PythonAPI对血缘与元数据操作 虽然开源源码都有Java示例和Python示例:但是这个API示例数量简直是1:100的差距!!不知为何,项目使用Java编写,示例推送偏 ...
- 谷歌浏览器输入地址后http自动转https解决方法
谷歌浏览器输入地址后http自动转https解决方法 https://blog.csdn.net/qq_51563725/article/details/133691727
- echo详解
linux下echo命令详解 linux的echo命令, 在shell编程中极为常用, 在终端下打印变量value的时候也是常常用到的, 因此有必要了解下echo的用法 echo命令的功能是在显示器上 ...
- 高版本jdk的访问私有成员属性的正确姿势
在jdk17+已经不能直接通过 setAccessible 来访问私有属性了 Field name = access.getClass().getDeclaredField("name&qu ...
- k8s初始化pod-pod标签
目录 initContainers(初始化容器) 静态pod pod的调度策略(将pod指派给特定节点) initContainers(初始化容器) k8s在1.3版本的时候引入了一个初始化容器(in ...
- jumpserver连接ecs实例报错:UNREACHABLE! => {"changed": false, "msg": "Failed to connect to the host via ssh: ssh_exchange_identification: Connection closed by remote host", "unreachable": true
报错分析思路: 1.是ssh密钥设置有没有对接 2.防火墙拦截问题 3.用户设置问题 4.sshd配置问题 问题解决: 无法与221.229.216.39端口35846进行协商:找不到匹配的主机密钥类 ...
- CSS3学习笔记-句子排版效果
CSS3提供了丰富的排版效果,可以通过样式属性来控制文本的排列方式.字体样式.行高.字间距等.以下是一些常用的句子排版效果示例: 文本对齐方式: .text-center { text-align: ...
- CodeForces 1141F2 贪心 离散化
CodeForces 1141F2 贪心 离散化 题意 给定一个序列,要求我们找出最多数量的不相交区间,每个区间和都相等. 思路 一开始没有头绪,不过看到 \(n \le 1500\) 后想到可以把所 ...
- LeetCode 哈希表、映射、集合篇(242、49)
242. 有效的字母异位词 给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词. 示例 1: 输入: s = "anagram", t = " ...
- 听6位专家畅谈AI大模型落地实践:场景和人才是关键
本文分享自华为云社区<听6位专家畅谈AI大模型落地实践:场景和人才是关键>,作者:华为云社区精选. 随着人工智能技术的不断突破,越来越多的行业开始应用AI技术来提高效率.降低成本.改善用户 ...