返回
Spring BeanFactory刷新过程逐个方法解析
后端
2023-12-09 02:33:52
前言
在本系列的第十篇文章中,我们将详细解析Spring BeanFactory刷新过程中的各个方法。
一、BeanFactoryPostProcessors
BeanFactoryPostProcessors允许我们在BeanFactory完全初始化之前修改BeanFactory的内部状态。
BeanFactoryPostProcessors通常用来:
- 注册更多的BeanFactoryPostProcessors
- 注册BeanPostProcessors
- 注册bean
Spring中有三个地方可以注册BeanFactoryPostProcessors:
- 在XML中使用
<bean>
元素 - 使用
@Configuration
注解的类 - 使用
BeanFactory.addBeanFactoryPostProcessor
方法
二、invokeBeanFactoryPostProcessors
该方法的作用是调用所有BeanFactoryPostProcessors的postProcessBeanFactory方法。
postProcessBeanFactory方法通常用来:
- 注册更多的BeanFactoryPostProcessors
- 注册BeanPostProcessors
- 注册bean
三、getAutowireCandidateBeanNames
该方法返回所有可以自动装配的bean的名称。
自动装配的bean是指:
- bean的scope为singleton
- bean没有被排除自动装配
- bean没有被标记为懒加载
四、sortBeanFactoryPostProcessors
该方法对BeanFactoryPostProcessors进行排序。
排序的规则是:
- 首先将PriorityOrderedBeanFactoryPostProcessor按照优先级排序
- 然后将OrderedBeanFactoryPostProcessor按照顺序排序
- 最后将剩下的BeanFactoryPostProcessor按照名称排序
五、getBeanDefinitionNames
该方法返回所有bean的名称。
六、executeBeanFactoryPostProcessors
该方法执行所有BeanFactoryPostProcessors的postProcessBeanFactory方法。
七、initializeBean
该方法用于初始化一个bean。
初始化一个bean包括:
- 调用bean的构造函数
- 设置bean的属性
- 调用bean的初始化方法
八、destroyBean
该方法用于销毁一个bean。
销毁一个bean包括:
- 调用bean的销毁方法
- 清除bean的属性
- 清除bean的引用
九、executeDestroyCallbacks
该方法用于执行所有销毁回调方法。
销毁回调方法是指:
- DisposableBean.destroy()方法
- @PreDestroy注解的方法
- 由
BeanPostProcessor
注册的销毁回调方法
总结
至此,我们已经详细解析了Spring BeanFactory刷新过程中的各个方法。