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方法SpringBoot之如何自动启动tomcat_第1张图片

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

SpringBoot之如何自动启动tomcat_第2张图片 

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

SpringBoot之如何自动启动tomcat_第3张图片 

4 我们继续向下跟进 

SpringBoot之如何自动启动tomcat_第4张图片 

5 继续近refresh 

SpringBoot之如何自动启动tomcat_第5张图片

 6 继续向下 AbstractApplicationContext实现了ConfigurableApplicationContext

SpringBoot之如何自动启动tomcat_第6张图片

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

SpringBoot之如何自动启动tomcat_第7张图片 8  终于看到曙光了 开始看到他准备创建webserver了 创建web服务器

SpringBoot之如何自动启动tomcat_第8张图片

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

SpringBoot之如何自动启动tomcat_第9张图片

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

SpringBoot之如何自动启动tomcat_第10张图片 

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

 

SpringBoot之如何自动启动tomcat_第11张图片 

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

SpringBoot之如何自动启动tomcat_第12张图片

12 我们继续看源码向下

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

 

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

SpringBoot之如何自动启动tomcat_第13张图片 

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

SpringBoot之如何自动启动tomcat_第14张图片 15 这里awati守护进程启动 到此就完成了 tomcat内嵌的自动启动

SpringBoot之如何自动启动tomcat_第15张图片

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

你可能感兴趣的:(Springboot)