Springboot源码 之 bean的注册

从 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刷新的时候,

 

猜你喜欢

转载自www.cnblogs.com/chuliang/p/11107566.html
今日推荐