spring-beans 注册 Beans(二) springboot 启动流程
本篇文章的主要目的是为了展示我们写的 @Configuration 注解的类是在何时加载的,有个全局的概念.
一、环境信息:
我们以 spring-boot 1.4.1.RELEASE 版本为例,阐述 bean 注册过程.
二、代码执行流程分析
1.入口代码的执行流程:
执行流程如下:
接着上图的 refresh 过程,详细的执行流程如下:
和 Bean 注册相关的主要两个地方:
(1)invokeBeanFactoryPostProcessors==> 将相关 BeanDefinition 注册到 DefaultListableBeanFactory
入口执行方法: ConfigurationClassPostProcessor.postProcessBeanDefinitionRegistry(registry);
(2)finishBeanFactoryInitialization(beanFactory)===>将相关的 Bean 实例化(非懒加载的).
入口执行方法: DefaultListableBeanFactory.preInstantiateSingletons().
从 refresh 到 PostProcessor
如下图:
(1)AbstractApplicationContext 里获取的 beanFactoryPostProcessors(),只有如下三个:
(2)主要用来加载 Bean 的 ConfigurationClassPostProcessor 是在下述阶段完成的,逐步细分
A> createApplicationContext()
B> new AnnotatedBeanDefinitionReader(registry);
C> AnnotationConfigUtils.registerAnnotationConfigProcessors(this.registry);
下一篇文章,将专门分析 ConfigurationClassPostProcessor.postProcessBeanDefinitionRegistry(registry)执行流程.
系列文章:
版权声明: 本文为 InfoQ 作者【梦倚栏杆】的原创文章。
原文链接:【http://xie.infoq.cn/article/f0599806fa255fab155bcfa6a】。文章转载请联系作者。











评论