大家好,我是R哥。

Spring Boot 4.0.0-RC1 最近发布了,虽然还没有发布正式版,但从最新的《Spring Boot 4.0 迁移指南》中发现,Spring Boot 4.0 已经移除了对 Undertow 嵌入式 Servlet 容器的支持

Spring Boot 4.0+ 之后,嵌入式 Servlet 容器只支持 Tomcat 和 Jetty 了。

Undertow 扫盲:

Undertow 是一个基于非阻塞 IO、专门为高性能设计的轻量级 Java Web 服务器,一直是小而美的存在,它是 Tomcat、Jetty 三者中最轻量的一个。

Undertow 体积更小,启动更快,在许多基准测试中,QPS 明显优于 Tomcat 和 Jetty

为什么 Spring Boot 4.0 要移除 Undertow?

因为 Spring Boot 4.0+ 已经升级到了 Servlet 6.1+ 规范,但 Undertow 却不支持 Servlet 6.1+,所以 Spring Boot 只能忍痛割爱,移除了对 Undertow 的支持。

Spring Boot 4.0 放弃 Undertow 的直接原因是:Undertow 不支持 Servlet 6.1+

另外,可能还有以下原因:

1、Undertow 社区相对较小,文档、学习资料等方面都不如 Tomcat、Jetty 丰富,对于传统 Servlet 模型的支持也那么完善。

2、Undertow 由 Red Hat / JBoss 开源,后来并入 WildFly 服务器并作为其默认 Web 容器。Red Hat 的重心一直是企业级项目,对免费开源的并不上心,CentOS 7.x 的停服就是前车之鉴,Undertow 这波也是直接摆烂了

3、Undertow 一直以来都不是一个主流的 Web 服务器/容器,使用率极低,在国内更没有什么存在感。所以,Spring Boot 移除对 Undertow 的支持影响也不大。

所以,强烈建议 Spring Boot 4.0 不要用 Undertow 了,也不要把 Spring Boot 4.0 的应用部署到不兼容 Servlet 6.1 的容器里


以后,Spring Boot 嵌入式 Servlet 容器的的圈子里只有 Tomcat + Jetty 了,Jetty 是当前 Undertow 被踢出局后,唯一还活着的非 Tomcat 选手,轻量、快、配置灵活,对于极简 Web 项目依然是个不错选择。

默认为 Tomcat,如果你要切换为 Jetty,可以使用以下配置:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    <exclusions>
        <!-- 排除默认的 Tomcat 容器依赖 -->
        <exclusion>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
        </exclusion>
    </exclusions>
</dependency>
<!-- 使用 Jetty -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-jetty</artifactId>
</dependency>

Spring Boot 基础就不介绍了,推荐看这个实战项目:

https://github.com/javastacks/spring-boot-best-practice


最后打个小广告:

如果你还没用过 Spring Boot,这里推荐下我的《Spring Boot 核心技术课》,已更新至 Spring Boot 3.5,17 个模块,几乎涉及所有核心技术,包括底层实现原理及代码实战,知识点非常齐全,助你快速打通 Spring Boot 的各个环节。

有需要的直接扫码订阅:

一次订阅,永久学习,免费更新。

等课程内容更新到 Spring Boot 4.x,本课程可能会涨价到 499 元,早订阅,早学习,早受益。

好了,今天的分享就到这里了,后面R哥会分享更多好玩的 Java 技术和最新的技术资讯,关注公众号Java技术栈第一时间推送。

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注