参考文章:
基于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 功能可以得到到当前的方法的调用结构。