大家好,我是被编程耽搁的文艺 Tom。明天能给大家介绍一下 Spring Bean 生命周期全过程,这道题呢也是大厂高频面试题。接下来我给大家做一个具体的剖析和解答。
Spring 生命周期全过程大抵分为五个阶段:创立前筹备阶段、创立实例阶段、依赖注入阶段、
容器缓存阶段和销毁实例阶段。
这张图呢展现了 Spring Bean 生命周期残缺流程,其中对每个阶段的具体操作做了具体介绍。上面咱们来剖析一下每个阶段的细节。
先来看第一阶段。
1、创立前筹备阶段
这个阶段次要是在开始 Bean 加载之前,从 Spring 上下文和相干配置中解析并查找 Bean 无关的配置内容,
比方 init-method
- 容器在初始化 bean 时调用的办法、destory-method
,容器在销毁 Bean 时调用的办法。
以及,BeanFactoryPostProcessor 这类的 bean 加载过程中的前置和后置解决。
这些类或者配置其实是 Spring 提供给开发者,用来实现 Bean 加载过程中的扩大机制,在很多和 Spring 集成的中间件常常应用,比方 Dubbo。
2、创立实例阶段
这个阶段次要是通过反射来创立 Bean 的实例对象,并且扫描和解析 Bean 申明的一些属性。
3、依赖注入阶段
在这个阶段,会检测被实例化的 Bean 是否存在其余依赖,如果存在其余依赖,1 就须要对这些被依赖 Bean 进行注入。比方通过读取
@Autowired
、@Setter 等依赖注入的配置。
在这个阶段还会触发一些扩大的调用,比方常见的扩大类:BeanPostProcessors(用来实现 Bean 初始化前后的回调)、
InitializingBean 类(这个类有一个 afterPropertiesSet()办法,给属性赋值)、还有 BeanFactoryAware 等等。
4、容器缓存阶段
容器缓存阶段次要是把 Bean 保留到 IoC 容器中缓存起来,到了这个阶段,Bean 就能够被开发者应用了。
这个阶段波及到的操作,常见的有,init-method
这个属性配置的办法,会在这个阶段调用。
在比方 BeanPostProcessors 办法中的后置处理器办法如:postProcessAfterInitialization,也是在这个阶段触发的。
5、销毁实例阶段
这个阶段,是实现 Spring 利用上下文敞开时,将销毁 Spring 上下文中所有的 Bean。
如果 Bean 实现了 DisposableBean 接口,或者配置了 destory-method
属 性,将会在这个阶段被调用。
看到这里,置信大家对 Spring Bean 的生命周期有了粗浅的印象,须要视频中 Spring Bean 生
命周期的高清流程图,能够私信我。在附赠一张高清的时序图给大家!
我是被编程耽搁的文艺 Tom,如果大家还有其余疑难,请在评论区留言。如果本次面试对你有帮忙,请动动手指一键三连分享给更多的人。关注我,面试不再难!
往期视频曾经整顿成文档模式,须要的小伙伴点个关注,增加下方名片!