在SpringApplication类的run方法。低版本和高版本的SpringBoot实现有区别。
低版本:
run方法调用了createApplicationContext
createApplicationContext代码如下:
它会根据contextClass来实例化一个容器然后返回.
¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥
高版本(2.7.14)的实现:
其中this.applicationContextFactory成员变量定义如下:
而DefaultApplicationContextFactory类的create方法代码如下:
它根据传入的web应用的类型(webApplicationType)来返回一个ConfigurableApplicationContext对象,作为SpringBoot的容器。
其中调用的getFromSpringFactories代码如下:
其中的apply方法会通过函数式接口调用如下代码:
最终将返回类型为AnnotationConfigServletWebServerApplicationContext的容器