首页 > 编程语言 > 详细

Spring bean的生命周期

时间:2021-07-01 12:01:15      阅读:37      评论:0      收藏:0      [点我收藏+]

单例的实例化过程:

AbstractBeanFactory的#createBean

技术分享图片

 

createBean方法里进去, 会看到这里允许提前创建一个Bean实例返回

技术分享图片

 

 进AbstractAutowireCapableBeanFactory#doCreateBean,

这几步比较重要:

技术分享图片

 

 1.允许修改后的合并定义

2.提前暴露bean 解决循环引用

3.属性填充

这两种可不做属性填充返回 InstantiationAwareBeanPostProcessor#postProcessAfterInstantiation  和  InstantiationAwareBeanPostProcessor#postProcessProperties, 

技术分享图片

技术分享图片

 

 4.初始化 initializeBean:

技术分享图片

 

主要走这四个步骤

1).  BeanPostProcessor#postProcessBeforeInitialization 

2). ((InitializingBean) bean).afterPropertiesSet();    执行bean的自定义初始化操作    注解会使用InitializingBean

3). 初始化: 这一步是通过反射执行初始化方法 Method methodToInvoke = ClassUtils.getInterfaceMethodIfPossible(initMethod);       methodToInvoke.invoke(bean);

4).  BeanPostProcessor#postProcessAfterInitialization

 

5. 下面就是提前暴露引用对象的单例对象初始化, 这里是三级缓存 

 

至此, bean就可以正常使用

 

 

 

销毁

DisposableBean#destroy 方法

 

Spring bean的生命周期

原文:https://www.cnblogs.com/dayanjing/p/14957142.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!