SpringBoot——嵌入式Servlet容器

1、SpringBoot内置Web服务器的启动原理

1、ServletWebServerFactoryAutoConfiguration

SpringBoot应用启动发现是Web应用。Web场景包导入tomcat

Web应用会创建一个Web版的ioc容器ServletWebServerApplicationContex

它通过搜索单个ServletWebServerFactorybean(Servlet的web服务器工厂,它产生Serlvet的web服务器)来引导自身。

web服务器工厂包括:TomcatServletWebServerFactory、JettyServletWebServerFactory或UnderTowletWebServerFactory。

底层直接有一个自动配置类:ServletWebServerFactoryAutoConfiguration。这个配置类还前置导入了上述三个工厂的自动配置类,如下

2、特定Web服务器的Servsr工厂类

@Import({ServletWebServerFactoryAutoConfiguration.BeanPostProcessorsRegistrar.class, EmbeddedTomcat.class, 
EmbeddedJetty.class, 
EmbeddedUndertow.class})
public class ServletWebServerFactoryAutoConfiguration {
    public ServletWebServerFactoryAutoConfiguration() {
    }

undertowServletWebServerFactory:

JettyServletWebServerFactory :

tomcatServletWebServerFactory:

当然这三个工厂的创建是有条件的

tomcat:

项目导了tomcat的依赖,容器中就放一个tomcat的服务器创建工厂(默认web-starter导tomcat的依赖)

同理,

Undertow服务器

jetty服务器:

例:启动tomcat内嵌服务器

内嵌服务器,就是手动吧启动服务器的代码调用(tomcat核心jar包),如下

 2、修改默认配置

1、切换服务器

spring-boot-starter-tomcat是spring-boot-starter-web的子依赖。需要将spring-boot-starter-tomca排除,换上需要的服务器依赖,如下:

2、 修改服务器默认的配置

所以,yml文件中这样改:

serverProperties一览:

3、直接自定义

原理:

Web应用会创建一个Web版的ioc容器ServletWebServerApplicationContex,它通过搜索单个ServletWebServerFactorybean(Servlet的web服务器工厂,它产生Serlvet的web服务器)来引导自身。

所以,

自定义ConfigurableServletWebServerFactory

经验分享 程序员 微信小程序 职场和发展