Servlet容器启动解析

216 阅读1分钟

Tomcat

介绍

轻量级web应用服务器

容器架构

image.png

容器处理

image.png

Servlet启动流程解析

启动前准备

  • refresh方法
  • createApplicationContext方法
  • 根据webApplicationType属性决定上下文
  • 初始化DEFAULT_SERVLET_WEB_CONTEXT_CLASS

webServer创建入口

  • refreshContext
  • refresh
  • onRefresh
  • createWebServer

webServer创建

  • getWebServerFactory
  • factory.getWebServer
  • 设置webServer属性
  • initPropertySources

servlet启动

  • refresh
  • finshRefresh
  • startWebServer
  • publishEvent

web容器工厂类加载解析

  • 配置引入
  • 注解处理
  • 容器工厂类引入

web容器个性化配置

属性注入

  • 配置web容器属性如:server.xxx=xyz
  • 注入到ServerProperties类中
  • 自动配置类导入WebServerFactoryCustomizer实现类
  • ServerProperties成为实现的属性

工厂初始化

  • getWebServerFactory获得具体web服务工厂类
  • 对具体实现类调用doGetBean进行初始化
  • 遍历BeanPostProcessor实现对bean处理
  • 进行WebServerFactoryCustomizerBeanPostProcessor实现方法

BeanPostProcessor方法实现

  • postProcessBeforeInitialization
  • getCustomizers()
  • 获得所有的WebServerFactoryCustomizer实现类
  • 依次调用实现类的customize方法进行定制处理

定制化流程

image.png