切换嵌入式Servlet容器
SpringBoot应用启动发现当前是Web应用,Web应用会创建一个Web版的ioc
容器 ServletWebServerApplicationContext
ServletWebServerApplicationContext
启动的时候会寻找 ServletWebServerFactory
,即Servlet的Web服务器工厂Servlet,用来生产出Web服务器。SpringBoot底层默认有很多的WebServer工厂,如TomcatServletWebServerFactory
, JettyServletWebServerFactory
, UndertowServletWebServerFactory
底层直接会有一个ServletWebServerFactoryAutoConfiguration
自动配置类来配置好Web服务器工厂,ServletWebServerFactoryAutoConfiguration
导入了ServletWebServerFactoryConfiguration
这个配置类
ServletWebServerFactoryConfiguration
配置类根据动态判断系统中到底导入了那个Web服务器的包(默认是web-starter导入tomcat包),容器中就有了 TomcatServletWebServerFactory
ServletWebServerApplicationContext
这个IOC容器会创建WebServer
TomcatServletWebServerFactory
创建出Tomcat服务器并启动,TomcatWebServer
的构造器拥有初始化方法initialize
调用this.tomcat.start()
启动服务器
内嵌服务器,就是手动调用启动服务器的代码