SpringBoot复习:(14)容器是怎么创建出来的?

在SpringApplication类的run方法。低版本和高版本的SpringBoot实现有区别。
低版本:
run方法调用了createApplicationContext
SpringBoot复习:(14)容器是怎么创建出来的?_第1张图片
createApplicationContext代码如下:
SpringBoot复习:(14)容器是怎么创建出来的?_第2张图片
它会根据contextClass来实例化一个容器然后返回.

¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥
高版本(2.7.14)的实现:
SpringBoot复习:(14)容器是怎么创建出来的?_第3张图片
在这里插入图片描述
其中this.applicationContextFactory成员变量定义如下:
在这里插入图片描述
在这里插入图片描述
而DefaultApplicationContextFactory类的create方法代码如下:
SpringBoot复习:(14)容器是怎么创建出来的?_第4张图片
它根据传入的web应用的类型(webApplicationType)来返回一个ConfigurableApplicationContext对象,作为SpringBoot的容器。
其中调用的getFromSpringFactories代码如下:
SpringBoot复习:(14)容器是怎么创建出来的?_第5张图片
其中的apply方法会通过函数式接口调用如下代码:
SpringBoot复习:(14)容器是怎么创建出来的?_第6张图片
最终将返回类型为AnnotationConfigServletWebServerApplicationContext的容器

你可能感兴趣的:(SpringBoot,spring,boot,后端,java)