spring bean的生成过程(从BeanDefinition

2020-07-09  本文已影响0人  黑铁大魔王
  1. 实例化之前,从beanDefinitionMap里取出beanDef
  2. 创建SpringBean
    1. 生成包装的class
      • createBean()
    • 第一次调用后置处理器(postProcessBeforeInitialization, postProcessAfterInitialization)
    • createBeanInstance()
      • 第二次调用后置处理器(determineCandidateConstructors)推断构造方法
    1. 第三次调用给后置处理器(postProcessMergedBeanDefinition)合并beanDef
    2. 缓存beanFactory
      • 第四次调用后置处理器(getEarlyBeanReference)处理循环依赖
    3. 填充属性(populateBean)
      • 第五次调用后置处理器(postProcessAfterInstantiation)
      • 第六次调用后置处理器(postProcessProperties, postProcessPropertyValues)为pvsToUse赋值
    4. 初始化bean(initializeBean),返回SpringBean
      • 第七次调用后置处理器(postProcessBeforeInitialization)
      • 第八次调用后置处理器(postProcessAfterInitialization)
  3. addSingleton
    this.singletonObjects.put(beanName, singletonObject);
    this.singletonFactories.remove(beanName);
    this.earlySingletonObjects.remove(beanName);
    this.registeredSingletons.add(beanName);
上一篇 下一篇

猜你喜欢

热点阅读