侧边栏壁纸
博主头像
牧云

怀璧慎显,博识谨言。

  • 累计撰写 84 篇文章
  • 累计创建 9 个标签
  • 累计收到 8 条评论

目 录CONTENT

文章目录

Spring Boot、Tomcat和Servlet版本关系

秋之牧云
2025-11-07 / 0 评论 / 0 点赞 / 57 阅读 / 0 字

Spring Boot、Tomcat和Servlet三者的发展历史及版本对应关系体现了Java Web技术的演进逻辑。以下从技术发展脉络和版本适配角度展开分析:

1. Servlet技术发展

  • 起源(1997-2003):Servlet 1.0作为Java EE核心规范诞生,定义了动态Web请求处理模型,替代了CGI技术。

  • 成熟期(2003-2017):Servlet 2.3(J2EE 1.3)引入Filter链,Servlet 3.0(Java EE 6)实现注解配置和异步支持,Servlet 4.0(Java EE 8)支持HTTP/2。

  • Jakarta时代(2020至今):Servlet 5.0随Jakarta EE 9发布,包名从javax迁移到jakarta。

2. Tomcat演进路径

  • 版本迭代逻辑:作为Servlet容器参考实现,Tomcat版本与Servlet规范严格绑定:

  • Tomcat 7 → Servlet 3.0/JSP 2.2(Java EE 6)

  • Tomcat 8.5 → Servlet 3.1/JSP 2.3(Java EE 7)

  • Tomcat 9 → Servlet 4.0/JSP 2.3(Java EE 8)

  • Tomcat 10 → Servlet 5.0(Jakarta EE 9)

3. Spring Boot的整合演进

  • 启动阶段(2014-2017):Spring Boot 1.x默认集成Tomcat 7/8,支持Servlet 3.0/3.1,通过spring-boot-starter-web实现零配置部署。

  • 性能优化期(2018-2021):Spring Boot 2.x捆绑Tomcat 9(Servlet 4.0),引入Reactive编程模型,支持Undertow/Jetty容器切换。

  • 云原生时代(2022至今):Spring Boot 3.x强制要求Tomcat 10.1+(Servlet 5.0+),全面适配Jakarta EE 9+规范,支持GraalVM原生镜像。

版本对应关系矩阵

Spring Boot

默认Tomcat

Servlet规范

特性依赖

1.5.x

8.5

3.1

Java EE7

2.0.x

9.0

4.0

HTTP/2

2.7.x

9.0.58

4.0

热部署优化

3.0.x

10.1.x

5.0

Jakarta

3.2.x

10.1.15

5.0

虚拟线程

技术转折点:2020年Jakarta EE规范更名导致Tomcat 10与Spring Boot 3.x必须同步升级,Tomcat 9到10的包结构变更(javax→jakarta)形成技术分水岭。开发者需特别注意Spring Boot 2.x与3.x系列对Servlet API的兼容性差异,跨大版本升级时需重构包导入路径。

0

评论区