NOTE

2.32 Autowired原理

1. 类继承图 2. 原理分析 1. spring容器refresh的时候有两个关键步骤,registerBeanPostProcessors和finishBeanFactoryInitialization 2. registerBeanPostProcessors会向spring容器注入Autow

Java创建于 更新于 historical

这是历史学习笔记,可能存在过时或不完整的理解。

1. 类继承图

2. 原理分析

  1. spring容器refresh的时候有两个关键步骤,registerBeanPostProcessors和finishBeanFactoryInitialization
  2. registerBeanPostProcessors会向spring容器注入AutowiredAnnotationBeanPostProcessor这个BeanPostProcessor,他有2个关键方法
  • postProcessMergedBeanDefinition(来自MergedBeanDefinitionPostProcessor) 这个方法的作用是:将需要依赖注入的属性信息封装到InjectionMetadata类中,InjectionMetadata类中包含了哪些需要注入的元素及元素要注入到哪个目标类中
  • postProcessPropertyValues(来自InstantiationAwareBeanPostProcessor) 这个方法的作用是:完成依赖属性的注入
  1. finishBeanFactoryInitialization 在创建完bean实例后会调用AutowiredAnnotationBeanPostProcessor的postProcessMergedBeanDefinition方法,然后为属性赋值的时候会调用AutowiredAnnotationBeanPostProcessor的postProcessPropertyValues方法,最后通过BeanFactory的getBean(beanName,beanClass)获取注入的bean实例并通过反射完成属性的注入

3. 参考