1.切换内嵌Servlet容器支持的默认web服务器webServer:Tomcat、Jetty、UndertowServletWebServerApplicationContext容器开始寻找ServletWebServerFactory并引导创建服务器来切换服务器(四种可以切换)切换方式:org.springframework.bootspring-boot-starter-web排除org.springframework.bootspring-boot-starter-tomcat导入org.springframework.bootspring-boot-starter-undertow依赖项>2022-07-1719:34:02.650INFO6808---[restartedMain]o.s.b.w.e.undertow.UndertowWebServer:Undertowstartedonport(s)8080(http)原理SpringBoot应用启动发现当前是web应用,因为导入了web场景包,同时又导入了tomcatweb应用创建了web版的ioc容器,名字是ServletWebServerApplicationContextServletWebServerApplicationContext开始在第一个项目中寻找ServletWebServerFactory时(??Servlet的web服务器工厂--->这个工厂生产Servlet的web服务器)SpringBoot底层默认有很多WebServer工厂:TomcatServletWebServerFactory,JettyServletWebServerFactory,UndertowServletWebServerFactory这些web服务器工厂没有需要我们配置的,直接在最下面会有一个自动配置类ServletWebServerFactoryAutoConfigurationServletWebServerFactoryAutoConfigurationimportsServletWebServerFactoryConfiguration(配置类)ServletWebServerFactoryConfiguration配置类根据动态判断系统中导入了哪个web服务器包。(默认是web-starter导入tomcat包)。容器中有TomcatServletWebServerFactory。。开始();启动tomcat其实就是一个嵌入式服务器,就是手动调用代码启动服务器(前提是tomcat核心jar包存在,才能启动tomcat)2.自定义Servlet容器实现WebServerFactoryCustomizer○结合配置文件的值与ServletWebServerFactory绑定修改配置文件server.xxx直接自定义ConfigurableServletWebServerFactoryxxxxxCustomizer:Customizer,可以改变xxxx的默认规则.web.servlet.server.ConfigurableServletWebServerFactory;importorg.springframework.stereotype.Component;@ComponentpublicclassCustomizationBeanimplementsWebServerFactoryCustomizer{@Overridepublicvoidcustomize(ConfigurableServletWebServerFactory.0server)