Spring之Bean的生命周期
2022-11-14 18:29:17 0 举报
AI智能生成
Spring之Bean的生命周期
作者其他创作
大纲/内容
创建过程-------------------
1.生成BeanDefinition
1.1.获取配置的扫描路径
1.2.得到包路径下的所有的class文件(注意不是class对象,而是文件对象,可以理解为File对象)
1.3.利用ASM技术解析每个class文件对象,得到class元数据信息
1.4.利用MetadataReader进行excludeFilters和includeFilters匹配,以及条件注解@Conditional的筛选
1.5.筛选通过后,基于metadataReader生成ScannedGenericBeanDefinition
1.6.判断类是不是抽象类、接口如果是则不通过
1.7最终表示扫描到了一个Bean,封装为BeanDefinition,将ScannedGenericBeanDefinition加入集合中
2.合并BeanDefinition
3.加载类
4.实例化前
InstantiationAwareBeanPostProcessor.postProcessBeforeInstantiation()
5.实例化
5.1.Supplier创建对象
5.2.工厂方法创建对象
5.3.推断使用构造方法和@Lookup注解创建对象
6. BeanDefinition的后置处理
MergedBeanDefinitionPostProcessor.postProcessMergedBeanDefinition()
7. 实例化后
InstantiationAwareBeanPostProcessor.postProcessAfterInstantiation()
8. 属性注入
InstantiationAwareBeanPostProcessor.postProcessProperties()
9.执行Aware
1. BeanNameAware:回传beanName给bean对象。
2. BeanClassLoaderAware:回传classLoader给bean对象。
3. BeanFactoryAware:回传beanFactory给对象。
10.初始化前
BeanPostProcessor.postProcessBeforeInitialization()
11. 初始化
11.1.查看当前Bean对象是否实现了InitializingBean接口,如果实现了就调用其afterPropertiesSet()
方法
方法
11.2.执行BeanDefinition中指定的初始化方法
12.初始化后
BeanPostProcessor.postProcessAfterInitialization()
销毁过程--------------------------
1.判断创建的Bean是不是
DisposableBean
DisposableBean
2.首先发布ContextClosedEvent事件
3.调用lifecycleProcessor的onCloese()方法
4.遍历disposableBeans销毁单例Bean
0 条评论
下一页