面试题spring的启动流程,spring常见面试题
本内容由系统网小编为大家分享,Windows系统安装教程、办公系统、软件怎么使用、软件使用教程、办公软件攻略等信息。
原创 千锋侯哥
一.前言
在面试过程中,经常有人问朋友春天的豆子的生活周期,如果你不知道春天, 你就不能处理这样的问题.甚至通过百度查询才能回答,也许很难记住,因为你不懂,过段时间又忘记了,因此,今天,泉峰胡科将他的朋友对春豆的整个初始化过程进行深入分析。
二.IOC容器的初始化
我们都知道,IOC容器的初始化发生在不同豆类初始化过程中(例如非懒惰的装载),所以在我们知道豆类生命周期之前,让我们先看看IOC容器的整个初始化过程。
让我们把流程图看作整体,确保我们有一个数字,并正确地理解它。
2.1启动IOC容器
启动IOC容器 - AnnotationConfig ApplicationContext
AppConfiguration是一个自定义的主配置类,代码如下:
在当前的实际开发过程中,IOC容器必须由Web服务器启动。 下面是注释ConfigApplicationContext容器的建模方法之一(创建一个容器以主配置类为基础)
2.2豆厂的建立
当SpringIOC容器被初始化时,在ApplicationContext中创建了BeanFactory对象。
AnnotationConfigApplicationContext的母类代码
让我们再看看DefaultListableBeanFactory中的核心集,这些集主要存储Bean的描述信息(BeanDefinition)。
2.3主要配置类装载
加载的代码更复杂,它没有在这里给出,朋友理解主配置为一个普通的豆类对象,放在刚创建的豆工厂,此时刚注册的豆类信息,没有作为对象初始化。
2.4豆厂后加工
这一步至关重要,其中一个是BeanFactory的PostProcessor-ConfigurationClassPostProcessor.从名称可以看出,该处理器创建为初始化配置类.在上一个步骤中,注册到BeanFactory的主要配置类,这个后端处理器将被初始化为Bean对象,并处理 @ComponentScan("com.qf")注释,检查其他组件,扫描的核心代码如下:
2.5豆厂其他豆类的初始化
在前面的步骤中,通过主要配置类扫描,将不同商业豆类注册到豆工厂,然后执行了不同豆类的初始化过程,这就是我们以后分析的豆生命周期执行过程。
2.6豆厂初始化完成
在Bean初始化完成后,整个BeanFactory被初始化,IOC容器被完成,并填充相应的数据集,等待后续的操作执行。
豆类初始化过程(生命周期)
接下来我们将着重讨论如何启动豆子.实际执行是前节的第五步。当然,这个过程主要是初始化这些样品和非懒惰的豆类,懒惰负荷的豆子和原始豆子在随后需要被使用到那个豆子(例如手动呼叫 getBean等)后被初始化。直到这时才完成完全的初始化,暂且不讨论。
3.1豆初始化流程图
旧规则,先看整个过程(红色框部分)
由于将使用下列内容,这里有两个概念来区分:
Bean的创建
Bean的初始化
所谓Bean创建(英语:Bean creation)是指通过构造方法在堆栈内创建Bean对象的过程,从Java视角来看,对象已经被初始化,但内部属性只有默认值,没有操作意义。
所谓的豆类初始化,站在春天的角上,还有一些已经建立的豆类后续行动,例如,依靠注射等。这个过程将给 Bean一些业务运作,成为真正的“产品”,可以即拿即用。这个过程是豆的生命周期过程。
例2豆初始化输入
接下来我们将从我们可以看到的名称开始对BeanFactory的初始化的核心方法进行研究,注意,所有非懒惰的Bean的负载实例都应该被初始化。
核心调用方法,初始化Bin的所有实例
3.3制作豆类的例子(基于反射)
getBean方法通过豆类名称获取豆类对象,确定豆类对象是否存在于IOC容器中,如果不存在,则执行初始化进程。核心方法如下:
3.4豆类案件的初始化
前面的步骤已经显示,Spring适当地创建了Bean对象,并依靠注入和初始化过程。 这里我们集中讨论了Bean的以下初始化过程,核心代码如下:
四、总结
因为春天有一个巨大的系统结构,我无法介绍的面孔都在那里,我们拿了一些核心代码,配合流程图讲解,基本上是整个Bean和整个IOC容器的初始化过程,简述了出来。如果你的朋友想了解更多关于春源代码,它与调试器兼容,通过国际奥委会的初始化进程.
最后总结了豆的整个生命周期过程:
春期通过反射产生豆类物体;
2,完成当前的豆依赖注射(填补成员变量);
3.如果Bean已经实现Aware接口,则通过调用不同的Aware接口方法设置属性;
4,执行BeanPostProcessor预置方法(通常是一个集合,构成一个呼叫链,执行顺序);
5.完成开发者定义的初始化方法(init-方法或@PostConstruct注释标签方法);
6. 实现 BeanPostProcessor 的后端方法 ( 通常 是 组成 一 个 连续 执行 的 呼叫 链 的 集合 ) ;
7, 完成初始化并将豆子插入豆厂集(核心是地图集);
8.当BeanFactory关闭时,Bean对象被摧毁,实现开发者定义的摧毁方法(destory-method或@PreDestory注释标记方法)。XTw.com.Cn系统网专业应用软件下载教程,免费windows10系统,win11,办公软件,OA办公系统,OA软件,办公自动化软件,开源系统,移动办公软件等信息,解决一体化的办公方案。
免责声明:本文中引用的各种信息及资料(包括但不限于文字、数据、图表及超链接等)均来源于该信息及资料的相关主体(包括但不限于公司、媒体、协会等机构)的官方网站或公开发表的信息。内容仅供参考使用,不准确地方联系删除处理!
联系邮箱:773537036@qq.com