SpringBoot之如何自动启动tomcat

首先我们要先理解Springboot和Spring mvc的区别 
SpringMVC项目构建一定包含三要素
1 配置web.xml  启动时去扫描 2,3 文件

2 配置application.xml  启动时进行bean初始化

3 配置springmvc.xml   依赖注入

而Springboot之所以能直接启动不需要做任何配置就是因为他把 2,3 两个事情自动执行了。这个后面文章会提及,今天主要只说以下如何启动的tomcat

我们来直接看源码

1  证明是Spring项目 然后执行run方法

2 我们进去run方法,继续向下跟踪

 

3 看到refreshContext 方法我们就比较熟悉了

 

4 我们继续向下跟进 

 

5 继续近refresh 

 6 继续向下 AbstractApplicationContext实现了ConfigurableApplicationContext

7 一定是这个servletwebserver 因为启动程序要被访问到一定是基于servlet构建一个地址,然后添加到tomcat中

 8  终于看到曙光了 开始看到他准备创建webserver了 创建web服务器

9 我们继续向下  这里它就会先判断是否webserver是否为空从而来获取webserver自动化初始

10  这里不用多想一定是tomcat 其实Springboot 启动是可以修改这个中间件的 默认它使用的是tomcat 如果想修改,感兴趣的小伙伴可以自行查找试试,不过比较麻烦。

 

11 我们继续向下看到了吧 这个 new Tomcat 并且进行了一些参数初始化,这个就类似于咱们自己在spring 里自己创建tomcat是一样的

 

 

下图这个是咱们自己手写的tomcat启动 ,只要添加依赖你也可以模仿Springboot内置tomcat 直接main启动

12 我们继续看源码向下

进去 getTomcatWebServer() 发现它在这里new了tomcat服务

 

13  这里我们就能看出他在这里启动了tomcat

 

14 在这里开启了守护进程,保证服务是一直启动

 15 这里awati守护进程启动 到此就完成了 tomcat内嵌的自动启动

Springboot 之内嵌tomcat 就先讲到这里。