在SpringApplication类的run方法。低版本和高版本的SpringBoot实现有区别。
低版本:
run方法调用了createApplicationContext

createApplicationContext代码如下:

它会根据contextClass来实例化一个容器然后返回.
¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥
高版本(2.7.14)的实现:


其中this.applicationContextFactory成员变量定义如下:


而DefaultApplicationContextFactory类的create方法代码如下:

它根据传入的web应用的类型(webApplicationType)来返回一个ConfigurableApplicationContext对象,作为SpringBoot的容器。
其中调用的getFromSpringFactories代码如下:

其中的apply方法会通过函数式接口调用如下代码:

最终将返回类型为AnnotationConfigServletWebServerApplicationContext的容器


















