springboot的源码(spring)主要分为几个部分
org.springframework.boot.SpringApplication#run(java.lang.Class<?>[], java.lang.String[])-->org.springframework.boot.SpringApplication#SpringApplication(org.springframework.core.io.ResourceLoader, java.lang.Class<?>...)1、构造SpringApplication,完成spring.factories文件中Initializers与Listeners的加载
2、加载配置文件,通过ConfigFileApplicationListener
3、加载BeanDefinitionRegistryPostProcessor与BeanFactoryPostProcessor完成bean的定义包装(非生成实例)
4、生成bean实例以及初始化
本文主要针对第一点,在启动类main方法中执行org.springframework.boot.SpringApplication#run(java.lang.Class<?>, java.lang.String...)后,SpringApplication对象的构造,主要是为了查看如何从spring.factories加载配置并实例化。基于springboot2.1.4
项目地址:https://gitee.com/eshin/springbootdemo.git#autotest
- 1、应用类型判断
2、spring.factories加载配置并实例化
setInitializers与setListeners流程基本上差不多,主要都是通过org.springframework.boot.SpringApplication#getSpringFactoriesInstances(java.lang.Class<T>)