构造SpringApplication对象
1、推测web应用类型
如果项目依赖中存在org.springframework.web.reactive.DispatcherHandler,并且不存在 org.springframework.web.servlet.DispatcherServlet,那么应用类型为WebApplicationType.REACTIVE
如果项目依赖中不存在org.springframework.web.reactive.DispatcherHandler,也不存在 org.springframework.web.servlet.DispatcherServlet,那么应用类型为WebApplicationType.NONE
否则,应用类型为WebApplicationType.SERVLET
2、获取BootstrapRegistryInitializer对象
从"META-INF/spring.factories"中读取key为BootstrapRegistryInitializer类型的扩展点,并实例化出对应扩展点 对象
注意:1、是类加载器能找到的"META-INF/spring.factories",包括当前的和jar包的,各种应用 2、同时这些文件的属性,以kv键值对的形式放在缓存中
BootstrapRegistryInitializer的作用是可以初始化BootstrapRegistry
上面的DefaultBootstrapContext对象就是一个BootstrapRegistry,可以用来注册一些对象,这些对象可以用在从SpringBoot启动到Spring容器初始化完成的过程中
我的理解:没有Spring容器之前就利用BootstrapRegistry来共享一些对象,有了Spring容器之后就利用Spring

本文详细解析了SpringBoot 2.7.8的启动过程,包括构造SpringApplication对象时的web应用类型推测、BootstrapRegistryInitializer、ApplicationContextInitializer和ApplicationListener的获取,以及run方法的执行步骤,如启动时间记录、环境配置、banner显示和ApplicationContext创建。
最低0.47元/天 解锁文章
903

被折叠的 条评论
为什么被折叠?



