关于Spring和SpringBoot中对配置文件的读取

news2024/10/6 10:33:59

Spring读取xml文件

具体流程见网址Spring源码分析2 — spring XML配置文件的解析流程 - 知乎 (zhihu.com)

 我这里只做一下总结和自己的理解:

(1)通过getConfigLocations方法, 从web.xml文件中读取配置文件地址,如果web.xml中读取不到,则使用默认地址,默认地址为 /WEB-INF/applicationContext.xml

   (2) 读取我们刚才找到的xml文件,并通过函数doLoadBeanDefinitions()对配置文件进行解析,主要工作就是将读取的配置文件转化成Beans即BeanDefinition对象

SpringBoot读取yml文件

参考网址SpringBoot加载配置文件application.yml的过程及原理(相同属性如何加载)-CSDN博客

 

1、springBoot何时加载配置文件?

答:在容器启动时,会有方法调用所以监听器的onApplicationEvent方法。然后与配置加载相关的ConfigFileApplicationListener的对应方法就会被加载,执行读取配置文件操作。也就是说当启动的时候会有监听器被调用,监听器中有一个方法就会对对配置文件进行读取

2、springBoot加载配置文件时,不同位置及不同后缀的配置文件如何加载?
答 加载顺序如下:


3、springBoot的 {prifile}文件时是如何加载的?

答 每次加载配置文件时都会先读取 spring.profiles.active属性,如果存在则将该配置文件装载到 加载队列的首位,然后在下次循环时进行寻找加载。

4、不同位置的配置文件配置了相同的属性时 将如何加载?

当无spring.profiles.active 时, 先读取到的属性会先生效。例如:file:./config/配置端口 8080 ;file:./配置端口8081;classpath:/config/配置端口8082 ;classpath:/配置的端口为8083 。根据上文的讲解最先读取到的时 file:./config/的8080,后面再次读取后该属性并不会生效。所以最终的配置端口为8080 (并不是后读取到到配置文件不加载,会加载;但是不生效)
当有spring.profiles.active 时,配置了相同属性时是profiles上的配置生效。例如:file:./config/上的yml配置了端口 8080 但是存在 spring.profiles.active属性 dev;然后我们在dev上也配置来一个端口 8081.此时生效的为8081.
5、不同位置到配置文件,设置不同属性时,后加载的文件是否会生效?

答 会有效果。会是互补配置。即先加载先生效,后加载的不同配置产生互补效果。例如:file:./config/配置了端口8080;file:./配置了访问路径/path。最总二者的配置会达成并集的效果。即二者都生效。
 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1150735.html

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

相关文章

ES 8.x新特性一览(完整版)

一、看点 在 2022 年 2 月 11 日,Elasticsearch(ES)正式发布了 8.0 版本,而截止到 2023 年 10 月,历经一年半时间,ES官方已经连续发布了多个版本,最新版本为 8.10.4。这一系列的更新引入了众多引…

【多线程面试题二十】、 如何实现互斥锁(mutex)?

文章底部有个人公众号:热爱技术的小郑。主要分享开发知识、学习资料、毕业设计指导等。有兴趣的可以关注一下。为何分享? 踩过的坑没必要让别人在再踩,自己复盘也能加深记忆。利己利人、所谓双赢。 面试官:如何实现互斥锁&#xf…

JavaSE20——IO流

IO流 1 Java IO流 I/O是Input/Output的缩写, I/O技术是非常实用的技术,用于处理设备之间的数据传输。如读/写文件,网络通讯等。Java程序中,对于数据的输入/输出操作以“流(stream)” 的方式进行 I(Input): 输入流指的是将数据以…

世界前沿技术发展报告2023《世界航空技术发展报告》(七)机载系统与武器技术

(七)机载系统与武器技术 1.机载系统技术1.1 美国推进商用5G技术在航空装备中的应用1.2 人工智能技术在航空中的应用日益增多1.3 美国空军研究实验室推出综合座舱感知技术1.4 美国空军为固定翼飞机驾驶员选定新一代头盔1.5 美国DARPA探索通过机载光能量中…

用LibreOffice在excel中画折线图

数据表格如下。假设想以x列为横坐标,y1和y2列分别为纵坐标画折线图。 选择插入-》图表: 选择折线图-》点和线,然后点击“下一步”: 选择:列中包含数据序列,然后点击完成(因为图挡住了数据…

【多线程面试题十五】、synchronized可以修饰静态方法和静态代码块吗?

文章底部有个人公众号:热爱技术的小郑。主要分享开发知识、学习资料、毕业设计指导等。有兴趣的可以关注一下。为何分享? 踩过的坑没必要让别人在再踩,自己复盘也能加深记忆。利己利人、所谓双赢。 面试官:synchronized可以修饰静…

生物信息学分析-blast序列比对及结果详细说明

1. 软件说明 Blast是一种基于序列比对的分析工具,可以用于寻找生物序列之间的同源性,它的全称是Basic Local Alignment Search Tool。 Blast有多种版本和用途,最常见的是基于Web的Blast和本地安装的Blast程序。Web版Blast可以直接在NCBI网站…

小白如何在一个月写一篇论文(中文核心,SCI)

小白如何半年发3篇sci的我教你如何快速“水”一篇sci论文_哔哩哔哩_bilibili 计算机视觉,cv领域 半年发3篇sci的我教你如何快速“水”一篇sci论文 计算机视觉(辅导 SCI EI 核心) 微信:whbwqq123或主页加up 小白如何快速写出一篇论文并成功发表&…

图像处理与计算机视觉--神经网络--手动计算

文章目录 1.简单感知器分类模型1.1.简单感知器分类模型介绍1.2.简单感知器分类模型实现 2线性神经元分类模型2.1.线性神经元分类模型介绍2.2.线性神经元分类模型实现 3.基于遍历学习的神经网络计算模型3.1.基于遍历学习的神经网络计算模型介绍3.2.基于遍历学习的神经网络计算模…

Windows原生蓝牙编程 第二章 选取设备输入配对码并配对【C++】

蓝牙系列文章目录 第一章 获取本地蓝牙并扫描周围蓝牙信息并输出 第二章 选取设备输入配对码并配对 文章目录 前言头文件一、选择想要配对的设备并设置配对码1.1 设置配对码1.2 选择设备并配对 二、全部代码三、测试结果总结 前言 接着第一章,我们已经把扫描到的蓝…

Composition API的引入

目录 全局API的移除和替代 插件的改进 TypeScript支持的增强 优势 劣势 总结 Vue.js 3.x版本引入了Composition API,这是一个全新的API风格,旨在提高代码的可读性和重用性。Composition API使我们可以根据逻辑相关性组织代码,而不是按照…

3.3每日一题(变量可分离方程)

1、判断类型选方法:等式中分别提一个x、y出来,形成了x与y相乘的等式;为变量可分离类型 2、不一定非得把y解出来,化成上述的等式即可(为隐函数的方程解) 注:等式不定积分后记得+一个…

Oracle Exadata X7-2掉电宕机导致集群无法启动处理过程

文章目录 前言一、当前的状态是什么?二、集群启动异常怀疑对象1.排查心跳网络异常ping自己私有IP延迟高ping其它主机私有IP不通 2.是否发生过重启 三、日志信息收集ocssd.trc集群crs日志cell的griddisk状态及报错 四、IB交换机的问题排查处理五、紧急恢复业务在IB完…

订水商城H5实战教程-05权限控制

目录 1 判断用户是否登录2 创建事件流3 获取不到Userid的问题4 权限控制整体效果 我们上一篇讲解了用户注册的功能,当用户注册完毕的时候再次打开小程序的时候就需要验证权限。权限分为两类,第一类是判断用户是否注册,第二类是当前用户具备什…

什么是鉴权?一篇文章带你了解postman的多种方式

一、什么是鉴权? 鉴权也就是身份认证,就是验证您是否有权限从服务器访问或操作相关数据。发送请求时,通常必须包含相应的检验参数以确保请求具有访问权限并返回所需数据。通俗的讲就是一个门禁,您想要进入室内,必须通…

windows应用软件扫描报告 不告谱 要钱

chatGPT开路,帮找。 当你想要查找Windows软件的漏洞而不涉及查看源代码时,你可以使用一些专门设计用于扫描漏洞的工具。这些工具通常会检查已安装的软件和操作系统的漏洞,并提供建议或修补程序。以下是一些可以用于查找Windows软件漏洞的工具…

数据结构之顺序表详解

hello,大家好,今天的内容是关于顺序表的,其实之前也发过文章,但是那个时候水平还是差了一点,有些地方不是很详细,这次会把每个点都讲清楚,也当给自己在复习一遍。 顺序表在本质上就是数组&#…

【智能座舱系列】- 深度解密小米Hyper OS,华为HarmonyOS区别

上一篇文章《小米的澎湃OS到底牛不牛?与鸿蒙系统之间差距有多大》,从多个方面比较了小米Hyper OS 与 华为HarmonyOS的区别,本篇文章继续从架构层面深度解读两者本质的区别。 小米澎湃OS是“以人为中心,打造人车家全生态操作系统”,该系统基于深度进化的Android以及自研的V…

SpringMVC Day 07 : 表单验证

前言 表单验证在Web开发中是非常常见和重要的一部分,它用于确保用户提交的数据符合预期的规则和限制。 通过表单验证,我们可以有效地捕获并处理用户输入中的错误或不正确的数据,从而提高应用程序的数据质量和用户体验。在本教程中&#xff…

Gerrit 事件监听实现

环境 Centos 7.9 Gerrit 2.15 Gerrit 2.15容器搭建 docker-compose.yml version: 3 services:gerrit:image: gerritcodereview/gerrit:2.15ports:- 8080:8080- 29418:29418volumes:- ./review_site:/var/gerrit/review_siteenvironment:- CANONICAL_WEB_URLhttp://localhos…