忍痛割愛,Spring Boot 宣布移除 Undertow!!
大家好,我是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 基礎就不介紹了,推薦看這個實戰項目:
好了,今天的分享就到這里了,后面R哥會分享更多好玩的 Java 技術和最新的技術資訊,關注公眾號Java技術棧第一時間推送。
版權聲明: 本文系公眾號 "Java技術棧" 原創,轉載、引用本文內容請注明出處,抄襲、洗稿一律投訴侵權,后果自負,并保留追究其法律責任的權利。

浙公網安備 33010602011771號