参考文章:

Spring之@Autowired依赖注入探究

基于Spring 5.2.10.RELEASE版本。

注册时机

通过Debug的断点分析,可以发现AutowiredAnnotationBeanPostProcessor的注册位于:

org.springframework.context.annotation.AnnotationConfigUtils#registerAnnotationConfigProcessors(org.springframework.beans.factory.support.BeanDefinitionRegistry, java.lang.Object)

从代码可以看到,先是构造了一个Bean定义,然后将其注册到注册中心。

if (!registry.containsBeanDefinition(AUTOWIRED_ANNOTATION_PROCESSOR_BEAN_NAME)) {
			RootBeanDefinition def = new RootBeanDefinition(AutowiredAnnotationBeanPostProcessor.class);
			def.setSource(source);
			beanDefs.add(registerPostProcessor(registry, def, AUTOWIRED_ANNOTATION_PROCESSOR_BEAN_NAME));
}

接下来我们来分析Spring是对其的注册过程是如何一步步完成的。

首先利用IDEA的Call Hierarchy 功能可以得到到当前的方法的调用结构。