Spring启动初始化过程

本文详细介绍了Spring启动的整个过程,从启动初始化、配置文件读取到Bean生命周期的各个阶段,包括环境准备、监听器注册、Bean的创建与初始化、循环依赖处理等关键步骤。同时,探讨了配置文件的查找顺序和如何处理profile激活与包含。通过对Bean生命周期的深入理解,有助于更好地掌握Spring框架的工作原理。
摘要由CSDN通过智能技术生成

 

1.spring启动过程

1)定时器,监控启动时间

2)获取spring监听器,启动监听器

此处启动的监听器主要是做环境处理的监听器,与后面环境准备中和环境运行中的监听器不同。主要过程是相同的,都是通过发布事件找到事件对应的监听器,之后启动事件监听处理(有一点尚不确定,在发布事件时,spring默认的监听器都是直接调用执行的,定义了一个Executor线程池,但是没设置值,看到里面有设置的方法,应该是需要自定义设置去异步执行监听的监听器)。

3)对启动传入的参数args进行封装,判断环境是哪种模式SERVLET、REACTIVE还是默认模式,然后将其和监听器listeners一起绑定到环境中

4)配置需要忽略的Bean,配置启动时的Banner

5)创建容器

6)实例化SpringBootExceptionResporter,用于打印启动时的日志

7)准备容器

主要做容器环境的准备工作,如是否允许BeanDefine覆盖,是否是懒加载

8)刷新容器

a.prepareRefresh主要完成配置类的解析,验证启动必须参数等

b.prepareBeanFactory准备容器需要用的BeanFactory

c.invokeBeanFactoryPostProcessors实例化BeanFactoryPostProcessor

d.registerBeanPostProcessors实例化所有的BeanPostProcessor

e.initMessageSource国际化,如果无默认的,则使用父类的

f.onRefresh特殊的Bean和子类的初始化,模板方法,不同的容器做不同的处理,如tomcat,jetty等

g.registerListeners注册事件监听器

h.finishBeanFactoryInitialization实例化所有非懒加载的bean,这里包含所有bean的创建过程

j.finishRefresh发布相应的事件

9)刷新容器后的处理

10)定时器停止监听

11)判断是会否要输出启动日志

12)启动监听器开始监听启动事件

13)运行监听器开始监听容器运行事件

public ConfigurableApplicationContext run(String... args) {
		StopWatch stopWatch = new StopWatch();
		stopWatch.start();
		ConfigurableApplicationContext context = null;
		Collection<SpringBootExceptionReporter> exceptionReporters = new ArrayList<>();
		configureHeadless
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值