构建SpringApplication对象
这里分为2部分,先new一个SpringApplication对象【入参是启动类】,再去调用这个对象的run方法。
1.primarySources属性记录传进来的启动类是什么,当做spring的配置类
2.有可能不是web应用,也能是Springboot java应用【recative是响应式的 Servlet是阻塞式的 古老的web类型 都能接受web请求的】
用ClassLoader加载到了就是这个响应式的应用
如果没有响应式的那些类并且没有Servlet这些类 那就是Servlet类型【SpringMVC类型】
等下会根据不同的web应用类型创建不同的spring容器。
取spring.factories里面的扩展点
springboot会去拿这个接口的实现类,默认情况下是没有这个接口扩展点的
看下面的
拿到这个ApplicationContextInitializer接口的5个实现类
然后赋值给spring容器的初始化器
拿到所有的监听器实现类,赋值给listeners这个属性
推测启动类是什么,因为传进来的配置类可以不一定是启动类【通