日常项目中,[email protected] @EnableAsync
[email protected]:ConfigurationClassPostProcessor这个类,说到这个类,我们要先从SpringBoot启动流程说起。
首先,看springboot启动流程中的一步:
SpringApplication对象的run方法,创建上下文context = createApplicationContext(); 这一步,会创建AnnotationConfigServletWebServerApplicationContext对象:
contextClass = Class.forName(DEFAULT_SERVLET_WEB_CONTEXT_CLASS);
(ConfigurableApplicationContext) BeanUtils.instantiateClass(contextClass);
类图关系如下:
AnnotationConfigServletWebServerApplicationContext类有两个重要的属性:private final AnnotatedBeanDefinitionReader reader; private final ClassPathBeanDefinitionScanner scanner;
创建AnnotationConfigServletWebServerApplicationContext对象时, 调用构造方法,会初始化该对象的上面两个属性。
见:
public AnnotationConfigServletWebServerApplicationContext() {
this.reader = new AnnotatedBeanDefinitionReader(this);
this.scanner = new ClassPathBeanDefinitionScanner(this);
}
在new AnnotatedBeanDefinitionReader(this)对象时,里面会涉及AnnotatedBeanDefinitionReader构造函数
AnnotatedBeanDefinitionReader构造函数AnnotationConfigUtils.registerAnnotationConfigProcessors(this.registry);
原文:https://www.cnblogs.com/kobe-lin/p/14225822.html