只需要引入如下依赖即可:
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启动就结束了