只需要引入如下依赖即可:

1.首先判断容器的类型,这里是servlet类型
org.springframework.boot.WebApplicationType#deduceFromClasspath

2.根据容器类型创建容器:
org.springframework.boot.SpringApplication#createApplicationContext

看下类图结构:
3.刷新容器:
自然是调用父类的刷新方法
org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext#refresh
最后回调到父类的方法:
org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext#onRefresh

4.看下如何创建tomcat对象,然后启动容器:
org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext#getWebServerFactory
这里为什么能拿到tomcat的容器:,后续自动装配详细解释

org.springframework.boot.web.embedded.tomcat.TomcatServletWebServerFactory#getWebServer

到此tomcat启动结束。
我们看看如何自动注入tomcat的?

org.springframework.boot.autoconfigure.web.servlet.WebMvcAutoConfiguration
org.springframework.boot.autoconfigure.web.servlet.DispatcherServletAutoConfiguration
org.springframework.boot.autoconfigure.web.servlet.ServletWebServerFactoryAutoConfiguration
org.springframework.boot.autoconfigure.web.servlet.ServletWebServerFactoryConfiguration
就这样制动注入一个tomcat的工厂结束了,整个web启动就结束了



















