流程总结两大部分:prepareContext + refreshContext
1.prepareContext
1.1 load方法,将启动类封装为beanDefinition注册到bedefinitionMap
2.refreshContext
2.1 invokeBeanFactoryPostProcessor
2.1.1 parse方法,递归扫描启动类上注解,确定basePackage,加载构件注解修饰的类
2.1.2 扫描解析@Import 将需要自动装配的class信息加载,最终注册到beanDefinitionMap
第一部分源码
主要方法:prepareContext–>load()
第二部分源码
主要方法:refreshContext()—>refresh()–>invokeBeanFactoryPostProcessors()–> parse()
所有注册信息已准备完毕,refresh中的
// Instantiate all remaining (non-lazy-init) singletons.
finishBeanFactoryInitialization(beanFactory); 方法会将所有非懒加载的bean反射创建…
最后在来看一下SpringBoot启动类注解