SpringBoot 嵌入式Servlet容器

472 阅读1分钟

SpringBoot 默认支持的webServer

  • Tomcat
  • Jetty
  • Undertow ServletWebServerApplicationContext 容器启动寻找ServletWebServerFactory 并引导创建服务器 image.png

原理分析

1.SpringBoot应用启动时发现当前是Web应用

2.Web应用会创建一个web版的IOC容器ServletWebServerApplicationContext

3.ServletWebServerApplicationContext启动的时候会去寻找ServletWebServerFactory(Servlet的web服务器工厂)

4.SpringBoot底层默认有许多WebServer工:TomcatServletWebServerFactory

JettyServletWebServerFactoryUndertowServletWebServerFactory

5.SpringBoot底层会有一个自动配置类:ServletWebServerFactoryAutoConfiguration

6.ServletWebServerFactoryAutoConfiguration导入了ServletWebServerFactoryConfiguration(配置类)

image.png

7.ServletWebServerFactoryConfiguration 配置类 根据动态判断系统中到底导入了那个Web服务器的包。(默认是web-starter导入tomcat包),容器中就有 TomcatServletWebServerFactory

image.png

image.png

8.TomcatServletWebServerFactory 创建出Tomcat服务器并启动;TomcatWebServer 的构造器拥有初始化方法initialize---this.tomcat.start();

image.png

内嵌服务器,就是手动把启动服务器的代码调用(tomcat核心jar包存在)

image.png