doCreateBean之populateBean方法详解

该方法在AbstractAutowireCapableBeanFactory类中的doCreateBean方法中有使用到

populateBean方法大致流程图:

 

 

 

(1)对Bean进行判空逻辑

(2)在设置属性前去修改Bean状态,也可以控制是否继续给Bean设置属性值(如果Bean不是Spring限制的 || 具有感知Bean实例化的后置处理器){执行配置上的后置处理器}

(3)如果前面代码设置了continueWithPropertyPopulation = false,表示用户可能已经自己填充了,此时直接返回Bean

(4)从BeanDefinition里面获取到能为Bean设置上的属性值

(5)根据Bean配置的依赖注入方式完成注入

(6)对Bean解析完未设置的属性进行再处理(重新检查是否注册了感知Bean实例化的后置处理器,如果注册了,则重新获取propertyValues(属性集合)然后进行依赖注入)

     其中的AutowiredAnnotationBeanPostProcessor(后置处理器)在doCreateBean().applyMergedBeanDefinitionPostProcess()中如果有被执行到的话,会将标记了@Autowired和@Value的存入到metadata.checkedElements缓存容器中

    

 

posted @ 2021-02-23 20:50  _kerry  阅读(1135)  评论(0编辑  收藏  举报