一图带你领略Spring Bean的生命
Spring Bean的生命周期全过程也是大厂的高频面试题之一。
接下来通过一张图带大家搞清楚Spring Bean的生命周期全过程。
Spring Bean的生命周期全过程分为5个阶段,创建前准备阶段、创建实例阶段、依赖注入阶段和容器缓存阶段以及销毁实例阶段。下图就是Spring的生命周期的完整的流程。
每个阶段的细节如下:
阶段1:创建前准备阶段
这个阶段主要是在开始Bean加载之前,从Spring上下文中去获取相关的配置并且解析,然后找到Bean有关的配置内容,比如说"init-method"容器在初始化Bean的时候去调用
这个方法。
"destory-method"容器在销毁Bean的时候去调用这个方法以及BeanFactoryPostProcessor这个类的Bean加载过程中的前置和后置的处理,这些类或者配置是Spring提供给开发者用来实现Bean加载过程中的一个扩展的机制。在很多和Spring集成的中间件中也经常使用到,比如Dubbo。
阶段2:创建实例阶段
这个阶段主要是通过反射来创建Bean的实际对象,并且扫描和解析Bean的声明的一些属性。
阶段3:依赖注入阶段
在这个阶段会检测被实例化的Bean是否存在其他依赖,如果存在其他依赖的话,就需要将这些依赖注入到Bean里面,比如说通过读取"@Autowired", "@Setter" 等注解去完成依赖注入的配置,这个阶段会触发一些扩展的调用,如常见的扩展类BeanPostProcessors它用来实现Bean初始化前后的一个回调。
如InitializingBean的afterPropertiesSet()方法,它可以给属性赋值。还有BeanFactoryAware等等。
阶段4:容器缓存阶段
容器缓存阶段主要是把Bean保存到IoC容器中缓存起来,到了这个阶段Bean就可以去被开发者使用了,这个阶段涉及到的操作有常见的“init-method”属性配置的方法会在这个阶段被调用,比如BeanPostProcessors它的后续处理方法postProcessAfterInitialization也会在这个阶段被触发。
阶段5:销毁时的阶段
这个阶段是完成Spring应用上下文的关闭的时候将会销毁Spring上下文中的所有的Bean,如果Bean实现了DisposableBean接口的话,或者是配置的“distory-method”的这些属性,都将会在这个阶段完成被调用。
关注公众号《程序员壹灯》,了解更多干货!
#23届找工作求助阵地#