第一步:
prepareBeanFactory()方法中添加一些spring默认的postprocessor
refresh方法中的prepareBeanFactory()执行的时候,加载的所有的BeanPostProcessor,在prepareBeanFactory方法执行完毕后,beanfactory里的后处理器是这样的:
0 = {ApplicationContextAwareProcessor@1522}
1 = {ApplicationListenerDetector@1935}
第二步:
invokeBeanFactoryPostProcessors()方法中,添加默认postprocessor:
0 = {ApplicationContextAwareProcessor@1522}
1 = {ApplicationListenerDetector@1888}
2 = {ConfigurationClassPostProcessor$ImportAwareBeanPostProcessor@2352}
第三步:
/ Invoke factory processors registered as beans in the context. //准备postprocessors,顾名思义,在创建bean invokeBeanFactoryPostProcessors(beanFactory);
第四步:
registerBeanPostProcessors(),先注册一个默认的:
0 = {ApplicationContextAwareProcessor@1522}
1 = {ApplicationListenerDetector@1888}
2 = {ConfigurationClassPostProcessor$ImportAwareBeanPostProcessor@2352}
3 = {PostProcessorRegistrationDelegate$BeanPostProcessorChecker@2527}
之后,分别添加postprocessors按如下顺序:
// First, register the BeanPostProcessors that implement PriorityOrdered.priorityOrderedPostProcessors = {ArrayList@2314} size = 2
0 = {CommonAnnotationBeanPostProcessor@2323}
1 = {AutowiredAnnotationBeanPostProcessor@2324}// Next, register the BeanPostProcessors that implement Ordered.orderedPostProcessors = {ArrayList@2528} size = 1
0 = {AnnotationAwareAspectJAutoProxyCreator@2533}// Now, register all regular BeanPostProcessors.null size:0
// Finally, re-register all internal BeanPostProcessors.0 = {AutowiredAnnotationBeanPostProcessor@2324}
1 = {CommonAnnotationBeanPostProcessor@2323}