Spring中Bean的生命周期

  • Post author:
  • Post category:其他




Bean




实例化的基本流程


1.加载


xml


配置文件,解析获取配置中的每个的信息,封装成一个个的


BeanDefifinition


对象


;

2.将


BeanDefifinition


存储在一个名为


beanDefifinitionMap





Map<String,BeanDefifinition>





;

3.ApplicationContext


底层遍历


beanDefifinitionMap


,创建


Bean


实例对象


;

4.创建好的


Bean


实例对象,被存储到一个名为


singletonObjects





Map<String,Object>





;

5.当执行


applicationContext.getBean(beanName)


时,从


singletonObjects


去匹配


Bean


实例返回。
当我们了解了基本流程之后,就需要深入了解具体的过程,则需要学习到


Spring


的后处理器。




Bean




工厂后处理器





– BeanFactoryPostProcessor

BeanFactoryPostProcessor


是一个接口规范,实现了该接口的类只要交由


Spring


容器管理的话,那么 Spring就会 回调该接口的方法,用于对BeanDefifinition


注册





修改


的功能。



Bean




后处理器





– BeanPostProcessor

Bean


被实例化后,到最终缓存到名为


singletonObjects


单例池之前,中间会经过


Bean


的初始化过程, 例如:属性 的填充、初始方法init


的执行等,其中有一个对外进行扩展的点


BeanPostProcessor


,我们称为


Bean


后 处理。跟上 面的 Bean


工厂后处理器相似,它也是一个接口,实现了该接口并被容器管理的


BeanPostProcessor


, 会在流程节 点上被Spring


自动调用。


生命周期总结:


Spring Bean


的生命周期是从


Bean


实例化之后,即通过反射创建出对象之后,到


Bean


成为一个完整对 象,最终存 储到单例池中,这个过程被称为Spring Bean


的生命周期。


Spring Bean


的生命周期大体上分为

三个阶段




一、Bean




的实例化阶段




Spring


框架会取出


BeanDefifinition


的信息进行判断当前


Bean


的范围是否是

singleton


的, 是否不是延迟加载的,是否不是


FactoryBean


等,最终将一个普通的


singleton




Bean


通过反射进行实例化;


二、Bean




的初始化阶段




Bean


创建之后还仅仅是个





半成品





,还需要对


Bean


实例的属性进行填充、执 行一些Aware


接口方法、执行


BeanPostProcessor


方法、执行


InitializingBean


接口的初始化方 法、执行自定义初始化init


方法等。该阶段是


Spring


最具技术含量和复杂度的阶段;


三、Bean




的完成阶段

:经过初始化阶段,


Bean


就成为了一个完整的


Spring Bean


,被存储到单例池singletonObjects中去了,即完成了


Spring Bean


的整个生命周期。



版权声明:本文为weixin_71601024原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。