一、自动装配
直接看下自动装配流程图:
二、自动装配的触发
1、直接debug一下,通过调用堆栈信息,可以看到自动装配是由AbstractApplicationContext#invokeBeanFactoryPostProcessors()触发的。
2、ConfigurationClassPostProcessor
该类主要处理@Configuration注解的,它实现了BeanDefinitionRegistryPostProcessor, 那么也间接实现了BeanFactoryPostProcessor。处理@Configuration的核心还是ConfigurationClassPostProcessor,这个类实现了BeanFactoryPostProcessor, 因此当AbstractApplicationContext执行refresh方法里的invokeBeanFactoryPostProcessors(beanFactory)方法时会执行自动装配。
关于AbstractApplicationContext#invokeBeanFactoryPostProcessors()和ConfigurationClassPostProcessor的详细介绍请分别查看《Spring源码阅读(三)-AbstractApplicationContext#invokeBeanFactoryPostProcessors》 和 《Spring源码阅读(四)-注册BeanDefinition-ConfigurationClassPostProcessor》