1.1SpringBoot启动流程
1、从main方法开始。首先运行静态的run方法,创建一个springApplication对象,再运行run方法,工厂初始化配置在构造函数中完成。
初始化配置:通过类加载器,(loadFactories)读取classpath下所有的spring.factories配置文件,创建一些初始化配置对象;
通知监听器应用程序启动开始,创建环境对象environment,用于读取环境配置,如application.yml.
2、创建应用程序上下文-createApplicationContext,创建bean工厂对象
3、刷新上下文(启动核心)refreshContxt(工厂对象配置、bean处理器配置、类的扫描、解析、bean定义、bean类信息缓存、服务器Tomcat创建、bean实例化、动态代理对象创建)。
3.1 配置工厂对象,包括上下文类加载器,对象发布处理器,beanFactoryPostProcessor。
3.2 注册并实例化bean工厂发布处理器,并且调用这些处理器,对包扫描(主要是class)文件。
3.3 注册并实例化bean发布处理器beanPostProcessor。
3.4 初始化一些与上下文有特别关系的bean对象(创建tomcat服务器)
3.5 实例化所有bean工程缓存的bean对象
3.6 发布通知上下文刷新完成(启动tomcat)
4、通知监听者-启动程序完成
启动中大部分对象都是beanFactory对象通过反射创建
https://www.cnblogs.com/Narule/p/14253754.html 参考。