SpringFramework — Bean 的生命周期

小龙 508 2022-05-27

image-1653635264280

bean 实例化部分生命周期面试题

说说 bean 实例化部分的生命周期

bean 实例化阶段的的生命周期包含三大步骤:

  1. bean 的实例化
  2. 属性赋值 + 依赖注入
  3. bean 的初始化生命周期回调
  4. bean 实例化的销毁

在所有非延迟加载的单实例 bean 初始化之前,会先初始化所有的 BeanPostProcess。

ApplicationContextrefresh() 方法中,finishBeanFactoryInitialization 步骤会初始化所有非延迟加载的单实例 bean。实例化 bean 的入口是 getBean() -> doGetBean(),该阶段会合并 eanDefinition,并根据 bean 的 scope 选择实例化 bean 的策略。

创建 bean 的逻辑会走 createBean() 方法,该方法中会先执行所有 InstantiationAwareBeanPostProcessorpostProcessorBeforeInstantiation() 方法初始化 bean 实例;如果 nstantiationAwareBeanPostProcessor 没有创建 bean 实例,则会调用 doCreate( 方法创建 bean 实例。在 doCreateBean() 方法中,会根据 bean 的 Class 中的构造器定义,决定如何实例化 bean,如果没有定义构造器,则会使用无参构造器,反射创建 bean 实例

bean 对象创建完成后,就会执行属性赋值 + 依赖注入的步骤


# IOC