Spring Boot默认支持Tomcat/Jetty/Undertow作为底层容器。在之前实战相关的文章中,可以看到引入spring-boot-starter-web就默认使用tomcat容器,这是为什么呢?

  实际通过该starter的pom.xml文件可以得到答案:其引入的就是tomcat容器。

  

  下面分三部分内容解析Tomcat容器配置

  一、自动配置原理

     关于自动配置的原理,前面几篇文章已经有详细的描述,这里将容器自动配置与其他配置的不同点。

    1、自动配置的类而不是直接与Tomcat相关的名称,因为Spring Boot底层默认支持三种容器。

    2、打开该类代码:可以看到import了内嵌的三种容器。

  进入EmbeddedTomcat类

  

  进入TomcatServletWebServerFactory类中getWebServer方法

  

  继续进入getTomcatWebServer等方法,直到调用tomcat初始化方法,start方法启动tomcat

  

  上面是关于tomcat启动的业务流程,那么它在哪里启动的呢?我们启动Spring Boot项目只有一处,那就是main方法。所以可以肯定是在run方法中调用了,跟踪run方法,可以分析出tomcat启动进程大致如下:

  

  可以理解在spring的refresh方法中调用getWebServer方法,在Spring容器初始化时将Tomcat等容器自动注入并启动。

  二、配置tomcat属性

  注意属性配置类ServerProperties,通过application.properties可以配置server前缀的属性修改容器默认属性值。

    

  

  三、替换Tomcat容器

  

最新文章

  1. js 中histroy.back()与history.go()的区别
  2. 拯救无法启动的虚拟机文件.vmdk中的数据
  3. Unity加载模块深度解析(Shader)
  4. Asp.net MVC 4新项目中创建area的后续操作
  5. Microsoft SDK 中Sample案例之Amcap項目 的运行方法(转)
  6. Palindrome Partitioning
  7. mysql外键详解
  8. 【GDOI 2011 DAY2 T3】零什么的最讨厌了 (快速求阶乘、中国剩余定理)
  9. node.js(七) 子进程 child_process模块
  10. PHP中GD库安装
  11. 从头到尾彻底解析Hash表算法
  12. 我的python之路【第二篇】数据类型与方法
  13. 强化学习(十五) A3C
  14. javascript的数组之reverse()
  15. angular 键盘事件绑定与过滤
  16. 解決 centos -bash: vim: command not found
  17. kubeadm 生成的token过期后,集群增加节点
  18. ASP.NET前台代码绑定后台变量方法总结
  19. vue 学习笔记1
  20. C++ Crypto++ RSA加密资料收集

热门文章

  1. atroot 的个人博客
  2. 从AAB文件生成APK文件
  3. Cesium中级教程4 - 空间数据可视化(二)
  4. Chrome DevTools 面板全攻略
  5. Android 12(S) 图形显示系统 - SurfaceFlinger的启动和消息队列处理机制(四)
  6. java ++ -- 异或 短路与 短路或 三目条件
  7. 学习JAVAWEB第十三天
  8. SuperPoint: Self-Supervised Interest Point Detection and Description 论文笔记
  9. 基础学习:关于this在派生类构造函数中的理解
  10. Docker版本Jenkins的使用