深入源码理解SpringBean生命周期 (3)

实例化完了,对一些需要收集的信息也准备好了,后续就是进行属性注入和回调初始化方法了,其中populateBean方法是属性填充,initializeBean是回调初始化方法。

深入源码理解SpringBean生命周期

InstatiationAwareBeanPostProcessor回调postProcessAfterInstantiation方法

AbstractAutowireCapableBeanFactory#populateBean(String beanName, RootBeanDefinition mbd, @Nullable BeanWrapper bw)

深入源码理解SpringBean生命周期

Aware接口回调

AbstractAutowireCapableBeanFactory#initializeBean(final String beanName, final Object bean, @Nullable RootBeanDefinition mbd)

部分Aware接口回调、BeanPostProcessor的初始化前置回调(包括PostConstruct的调用、其余Aware的回调)、afterPropertiesSet回调、自定义init方法回调、BeanPostProcessor的初始化后置回调

深入源码理解SpringBean生命周期

部分Aware回调

AbstractAutowireCapableBeanFactory#invokeAwareMethods(final String beanName, final Object bean

深入源码理解SpringBean生命周期

BeanPostProcessor的初始化前置回调

深入源码理解SpringBean生命周期

重要BeanPostProcessor如下: ApplicationContextAwareProcessor#postProcessBeforeInitialization(final Object bean, String beanName)回调剩余Aware方法

深入源码理解SpringBean生命周期

InitDestroyAnnotationBeanPostProcessor#postProcessBeforeInitialization(final Object bean, String beanName)回调PostConstruct方法

深入源码理解SpringBean生命周期


深入源码理解SpringBean生命周期

回调初始化方法

AbstractAutowireCapableBeanFactory#invokeInitMethods(String beanName, final Object bean, @Nullable RootBeanDefinition mbd)
先回调InitializingBean的afterPropertiesSet方法,随后回调自定义的init-method

深入源码理解SpringBean生命周期

BeanPostProcessor的初始化后置回调

回调BeanPostProcessor

销毁

销毁方法最终会走到DisposableBeanAdapter的destroy方法去做处理,与初始化方法类似,这里简单介绍把。
看图就能发现,顺序执行的,先是注解方法,然后是DisposableBean的回调,最后是自定义的销毁方法,就是如此简单。

深入源码理解SpringBean生命周期

(小声)弄了挺久的,如果对你有帮助,或者让你回忆巩固相关知识点了,给我点个"支持“鼓励下..(滑稽),有什么问题欢迎评论讨论。。。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zysdzw.html