大家好,我是被编程耽搁的文艺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,如果大家还有其余疑难,请在评论区留言。如果本次面试对你有帮忙,请动动手指一键三连分享给更多的人。关注我,面试不再难!
往期视频曾经整顿成文档模式,须要的小伙伴点个关注,增加下方名片!