SpringBoot启动如何加载application.yml配置文件

一、前言在spring时代配置文件的加载都是通过web.xml配置加载的(Servlet3.0之前),可能配置方式有所不同,但是大多数都是通过指定路径的文件名的形式去告诉spring该加载哪个文件; <context-param>   <param-name>contextConfigLocation</param-name>   <...
摘要由CSDN通过智能技术生成

一、前言
在spring时代配置文件的加载都是通过web.xml配置加载的(Servlet3.0之前),可能配置方式有所不同,但是大多数都是通过指定路径的文件名的形式去告诉spring该加载哪个文件;

   <context-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>/WEB-INF/application*.xml</param-value>
    </context-param>

而到了springboot时代,我们发现原来熟悉的web.xml已不复存在,但是springboot却依然可以找到默认的配置文件(application.yml),那它是如何实现的呢?今天我们就一起来探究一下springboot自动加载配置文件的机制!

看完本篇文章你将了解到:

springboot什么时候加载配置文件
springboot通过哪个类加载配置文件
springboot自动加载配置文件流程
激活文件优先级
文件加载路径优先级
文件后缀优先级
二、提出猜想
我们知道在使用springboot中我们只要在resources下面新建一个application.yml文件他就会自动加载,那是不是springboot默认在哪里配置了这个路径和文件名?

三、验证猜想
为了证实我们的猜想,我们可以通过查看springboot项目源码,跟着debug一步一步走;
这里我使用的是springboot2.0版本,2.0与1.5版本比较启动的大体流程是一样的,只不过在一些实现中有所差异;

1.启动流程
要知道springboot如何加载配置文件,就需要了解它的启动流程:

我们从main方法进入,大概的调用流程如下:

DemoApplication.main->SpringApplication.run->new SpringApplication().run

在这里插入图片描述
其实启动的主要过程都在new SpringApplication().run();

new SpringApplication():创建SpringApplication实例,负责加载配置一些基本的环境变量、资源、构造器、监听器
run():负责springboot整个启动过程,包括加载创建环境、打印banner、配置文件、配置应用上下文,加载bean等等sb整个生命周期几乎都在run方法中;
今天我们的主题是sb如何加载配置文件,所以着重讲解加载配置文件和之前的操作原理和源码,其他的功能以后有机会再和大家一起研究,下面我们来看看new SpringApplication()做了什么操作;

2.创建SpringApplication实例

/**
 * 创建一个SpringApplication实体,应用程序上下文将从指定的主源文档加载bean以获取详细信息,
 * 这个实例可以在调用之前自定义
 * @param resourceLoader
 * @param primarySources
 */
@SuppressWarnings({ "unchecked", "rawtypes" })
public SpringApplication(ResourceLoader resourceLoader, Class<?>... primarySources) {
	//使用的资源加载器
	this.resourceLoader = resourceLoader;
	//主要的bean资源 primarySources【在这里是启动类所在的.class】,不能为null,如果为null,抛异常
	Assert.notNull(primarySources, "PrimarySources must not be null");
	//启动类的实例数组转化成list,放在LinkedHashSet集合中
	this.primarySources = new LinkedHashSe
  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值