《springboot源码系列》——内置tomcat启动原理

  tomcat作为一个web容器,启动后可以监听指定端口号、接收http请求,然后对请求进行封装后转发到servlet代码中。一般mvc框架都会把请求自动映射到我们的controller上去。那么在springboot中、它是如何自动实现的呢。

获取Autoconfiguration

  springboot项目默认开启了 @EnableAutoConfiguration 注解,里面 import 了 AutoConfigurationImportSelector 类,他会找到需要满足规范需要自动装配jar的所有AutoConfiguration配置。比如我这个项目引入的mybatis、redis,以及内置的 tomcat 等。

构建WebServerFactory

   ServletWebServerFactoryAutoConfiguration 这个配置类就负责对webserver容器自动装配,springboot默认的容器是tomcat,所以它这里的webserver就是tomcat了。首先是通过配置文件 定制出了一个 webServerFactory。

创建WebServer

  启动的时候,ServletWebServerApplicationContext 的 createWebServer 方法就是基于 tomcat 原生的api组装出一个webserver,然后调用 this.tomcat.start(); 启动容器,用来接收http请求。

注册DispatcherServlet

  我们在使用springmvc的时候,所有的请求是交给 DispatcherServlet 处理的,我们会在web.xml配置需要被拦截的url。那么在 springboot 中肯定也有一个 DispatcherServletAutoConfiguration 的。这里首先就创建了一个 DispatcherServlet 的 Bean, 它是直接映射到 根路径。

  然后紧接着,就把 注册到了tomcat中,这样tomcat就能接收我们的请求了。

原文地址:https://www.cnblogs.com/wlwl/p/14969392.html