返回

Spring BeanFactory刷新过程逐个方法解析

后端

前言

在本系列的第十篇文章中,我们将详细解析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刷新过程中的各个方法。