在Springboot项目下面是如何组装Bean的(上)-启动流程概览
2021-06-06 03:05
标签:时间 base and sp1 contex 了解 ica res proc createApplicationContext完成后,加载了6个BeanDefinition,此时还没有实例化任何单例,由此可以知道BeanDefinition不是一下子把所有的都加载进来的,适当的时间加载对应的BeanDefinition: prepareContext完成之后,把启动类的BeanDefinition也加载进来了,此时还创建了5个singleton的bean,由此可知Bean也不是统一把所有的bean创建出来的,适当的时间创建对应的bean 接下来的refreshContext(context)就是重头戏了,因为很多BeanDefinition和Bean创建都会在这里实现,refreshContext最终会调用AbstractApplicationContext#refresh方法: 首先重点关注invokeBeanFactoryPostProcessors(beanFactory),执行完这个步骤后BeanDefinition从7个增加到123个,Singleton bean只是从5个增加到15个: 执行完registerBeanPostProcessors(beanFactory),BeanDefinition的数量没有变化,SingletonBean从15个增加到22个,到这里是不是大概可以判断想要研究BeanDefinition如何加载的,那应该主要关注前面那个步骤呢? finishBeanFactoryInitialization(beanFactory);执行完之后,Singleton Bean从59个增加到136个,入口的springbootApplication和自定义Bean EnableEchoServerFlag是在这个时候创建的。疑问:为什么EchoServer和EnableEchoServerFlag会在不同的时间创建呢?难道onRefresh是创建"主Bean",finishBeanFactoryInitialization是创建依赖的Bean? 以上分析可以知道,想要知道BeanDefinition是怎么创建的,应该主要关注invokeBeanFactoryPostProcessors(beanFactory);想要知道怎么实例化Bean的话,应该主要关注onRefresh和finishBeanFactoryInitialization 更多请了解一米源码公众号或https://itproject-manager.com/ 在Springboot项目下面是如何组装Bean的(上)-启动流程概览 标签:时间 base and sp1 contex 了解 ica res proc 原文地址:https://www.cnblogs.com/jovic/p/14617769.html
onRefresh执行完之后,Singleton bean从22个增加到59个,并且自定义Bean EchoServer也是在这个时候创建的。
文章标题:在Springboot项目下面是如何组装Bean的(上)-启动流程概览
文章链接:http://soscw.com/index.php/essay/91094.html