从 SpringApplication.run()进来
注意这里有个分支(题外话,可以忽略)
ConfigurableEnvironment environment =prepareEnvironment(listeners,applicationArguments)--->
listeners.environmentPrepared(environment);
会创建一个applicaitonContext,会再走一遍run方法,这样的话本来是应该无限循环的,但是因为有个判断,sources里面有“bootstrap”的直接返回不再递归。
回归正题,
context = createApplicationContext();
这一句,实例化DEFAULT_WEB_CONTEXT_CLASS, 也就是AnnotationConfigEmbeddedWebApplicationContext,看构造方法
this.reader = new AnnotatedBeanDefinitionReader(this);--->
AnnotationConfigUtils.registerAnnotationConfigProcessors(this.registry);--->
RootBeanDefinition def = new RootBeanDefinition(ConfigurationClassPostProcessor.class);
注册了一个ConfigurationClassPostProcessor,这是个BeanDefinitionRegistryPostProcessor,在applicationContext刷新的时候,