springboot 2.2与2.1版本的区别

本文探讨了从SpringBoot 2.1到2.2版本的升级过程中遇到的问题,特别是对HTTP/2的支持增强,以及Netty版本的调整如何解决了特定代码错误。

在使用中发现springboot 2.1与2.2版本之间的区别


    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.6.RELEASE</version>
    </parent>

下面的一段代码就会报错在这里插入图片描述

翻阅了下项目中的External Libraries 引入的 netty 版本为 4.1.36

更新了下starter 版本为 2.2系列 同样的代码 红色错误就会消失

springboot 2.1 版 与 2.2 版 的区别:

新增对 HTTP/2 支持

<think> 我们正在讨论Spring Boot版本Tomcat版本的对应关系。根据之前的引用,我们可以总结如下: 1. Spring Boot内嵌了Tomcat服务器,每个Spring Boot版本会默认绑定一个特定的Tomcat版本2. 我们可以通过查看Spring Boot官方文档或Maven仓库中的依赖关系来确定对应版本。 具体步骤: - 访问Maven仓库,查找特定Spring Boot版本的`spring-boot-starter-tomcat`,查看其依赖的Tomcat版本。 - 例如,对于Spring Boot 2.5.2,我们可以查看其`spring-boot-starter-tomcat`的依赖,从而知道它使用的Tomcat版本。 根据引用[4]提供的链接:https://search.maven.org/artifact/org.springframework.boot/spring-boot-starter-tomcat/2.5.2/jar,我们可以得知Spring Boot 2.5.2使用的是Tomcat 9.0.48(具体版本可能因小版本更新而略有不同,但大版本一致)。 此外,引用[3]提到Spring Boot有三个重要分支:1.5.x、2.0.x和2.1.x(实际上现在已经有更高版本)。每个分支对应的Tomcat版本不同。 以下是一些常见Spring Boot版本内嵌Tomcat版本的对应关系(根据历史版本整理,具体以实际依赖为准): | Spring Boot版本 | 内嵌Tomcat版本 | |----------------|---------------| | 1.5.x | 8.5.x | | 2.0.x | 8.5.x | | 2.1.x | 9.0.x | | 2.2.x | 9.0.x | | 2.3.x | 9.0.x | | 2.4.x | 9.0.x | | 2.5.x | 9.0.x | | 2.6.x | 9.0.x | | 2.7.x | 9.0.x | | 3.0.x (需要JDK17+) | 10.1.x | | 3.1.x | 10.1.x | 注意: - Spring Boot 3.0开始,要求至少JDK 17,并且使用Tomcat 10.1.x(支持Jakarta EE 10,即Servlet 6.0)。 - 在Spring Boot 2.x系列中,从2.0开始使用Tomcat 8.5,直到2.1.x开始升级到Tomcat 9.0(支持Servlet 4.0),并一直延续到2.7.x。 - 如果需要使用Tomcat 10.x(支持Jakarta EE 9+,即Servlet 5.0+),则需要使用Spring Boot 3.x。 另外,我们也可以通过以下方式在项目中查看当前使用的Tomcat版本1. 启动Spring Boot应用,查看启动日志,其中会显示Tomcat的版本信息。 2. 在项目的依赖树中查看:使用Maven命令`mvn dependency:tree`,找到`tomcat-embed-core`的版本。 例如,对于Spring Boot 2.5.2,在`spring-boot-starter-tomcat`中会传递依赖`tomcat-embed-core`,其版本由Spring Boot父POM控制。 **总结**:Spring Boot版本内嵌Tomcat版本有强关联,一般不需要单独指定。若需要升级或降级Tomcat版本,可以在Maven中排除默认的Tomcat依赖并引入指定版本,但需注意版本兼容性(如Servlet API的版本匹配)。 参考引用: - 引用[3]提到Spring Boot的分支(1.5.x, 2.0.x, 2.1.x)以及版本发布顺序[^3]。 - 引用[4]提供了查看Spring Boot特定版本(如2.5.2)对应的Tomcat依赖的方法[^4]。 §§相关问题§§ 1. 如何手动升级Spring Boot项目中的Tomcat版本2. Spring Boot 3.0需要什么版本的JDK? 3. 如何查看当前Spring Boot项目使用的Tomcat版本? 4. Spring Boot内嵌Tomcat版本外部部署的Tomcat版本有何不同? </think> ### Spring Boot版本Tomcat版本的对应关系 Spring Boot通过`spring-boot-starter-tomcat`模块内嵌Tomcat服务器,不同版本的Spring Boot默认集成了特定版本的Tomcat。以下是主要版本的对应关系: | Spring Boot 版本 | 内嵌 Tomcat 版本 | 支持的 Jakarta EE/Servlet 规范 | JDK 最低要求 | |------------------|------------------|-------------------------------|-------------| | **3.1.x** | 10.1.x | Jakarta EE 10 (Servlet 6.0) | JDK 17+ | | **3.0.x** | 10.1.x | Jakarta EE 10 (Servlet 6.0) | JDK 17+ | | **2.7.x** | 9.0.x | Jakarta EE 9 (Servlet 5.0) | JDK 8+ | | **2.6.x** | 9.0.x | Jakarta EE 9 (Servlet 5.0) | JDK 8+ | | **2.5.x** | 9.0.x | Jakarta EE 9 (Servlet 5.0) | JDK 8+ | | **2.4.x** | 9.0.x | JavaEE 8 (Servlet 4.0) | JDK 8+ | | **2.3.x** | 9.0.x | JavaEE 8 (Servlet 4.0) | JDK 8+ | | **2.2.x** | 9.0.x | JavaEE 8 (Servlet 4.0) | JDK 8+ | | **2.1.x** | 9.0.x | JavaEE 8 (Servlet 4.0) | JDK 8+ | | **2.0.x** | 8.5.x | JavaEE 7 (Servlet 3.1) | JDK 8+ | | **1.5.x** | 8.5.x | JavaEE 7 (Servlet 3.1) | JDK 7+ | #### 关键说明: 1. **版本升级规律** - Spring Boot 2.x → Tomcat 9.x (支持Servlet 4.0/5.0) - Spring Boot 3.x → Tomcat 10.1.x (支持Servlet 6.0) - 大版本升级通常伴随Tomcat主版本升级[^3][^4] 2. **验证方法** 在Maven仓库查看具体依赖版本: ```markdown https://search.maven.org/artifact/org.springframework.boot/spring-boot-starter-tomcat/{version}/jar ``` 例如Spring Boot 2.5.2: [spring-boot-starter-tomcat/2.5.2](https://search.maven.org/artifact/org.springframework.boot/spring-boot-starter-tomcat/2.5.2/jar) → Tomcat 9.0.52[^4] 3. **兼容性要求** - Spring Boot 3.x+ **必须使用JDK 17+** - Tomcat 10.1.x **需要Jakarta EE 10环境**(包路径为`jakarta.servlet.*`) - 升级时需同步检查Servlet API兼容性[^1][^5] 4. **自定义Tomcat版本** 在`pom.xml`中覆盖默认版本: ```xml <properties> <tomcat.version>10.1.18</tomcat.version> </properties> ``` 但需确保Spring Boot版本兼容,否则可能引发API冲突。 > 最佳实践:建议优先使用Spring Boot默认集成的Tomcat版本,可最大程度避免兼容性问题[^2][^3]。 --- ### 相关问题 1. 如何查看当前Spring Boot项目实际使用的Tomcat版本2. 将Spring Boot 2.7升级到3.0时,Tomcat需要做哪些适配修改? 3. 在Spring Boot中如何替换内嵌Tomcat为Jetty或Undertow? 4. Spring Boot 3.x为什么必须使用JDK 17+? 5. Tomcat 10.x9.x在Servlet API上有哪些不兼容变更? [^1]: Spring BootTomcat的版本兼容性要求 [^2]: Spring Boot内嵌服务器的实现机制 [^3]: Spring Boot各分支版本的发布时间线 [^4]: 通过Maven仓库验证依赖版本 [^5]: JDKTomcat的版本匹配规则
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值