Spring Boot默认集成Tomcat作为嵌入式服务器,同时完美支持Jetty、Undertow和Netty(Reactor Netty)的灵活切换,开发者可根据业务场景在几分钟内完成替换。
Spring Boot支持的嵌入式服务器一览
Spring Boot的自动配置机制让嵌入式服务器变得开箱即用,当你引入spring-boot-starter-web时,它默认包含spring-boot-starter-tomcat,因此启动后就是一个基于Tomcat的Web应用,但官方同样提供了对Jetty、Undertow和Netty的一等支持,通过修改依赖和排除项即可切换。
以下表格归纳了这四种服务器的核心特性:
| 服务器 | 默认状态 | 适用场景 | 配置方式 |
|---|---|---|---|
| Tomcat | 默认 | 通用Web应用,兼容性最好 | 无需额外操作,引入starter-web即可 |
| Jetty | 可切换 | 嵌入式环境,资源受限场景 | 排除Tomcat,引入starter-jetty |
| Undertow | 可切换 | 高并发、I/O密集型应用 | 排除Tomcat,引入starter-undertow |
| Netty (Reactor Netty) | 响应式场景 | WebFlux应用,异步非阻塞 | 引入spring-boot-starter-webflux |
从技术实现角度看,Spring Boot通过ServletWebServerFactory或ReactiveWebServerFactory接口来抽象服务器,所以切换时只需改变工厂类的实现,Tomcat对应TomcatServletWebServerFactory,Jetty对应JettyServletWebServerFactory,Undertow对应UndertowServletWebServerFactory,而Netty则用于响应式栈。
快速切换服务器的实操指南
从Tomcat切换到Jetty
如果你希望应用在启动时占用更少内存,或需要更灵活的嵌入式控制,Jetty是一个成熟的选择,具体操作如下:
Maven项目:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<exclusion>
;
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jetty</artifactId>
</dependency>
Gradle项目:
implementation('org.springframework.boot:spring-boot-starter-web') {
exclude group: 'org.springframework.boot', module: 'spring-boot-starter-tomcat'
}
implementation 'org.springframework.boot:spring-boot-starter-jetty'
执行后启动应用,控制台日志会显示Jetty started on port(s) 8080,表明服务器已切换。
切换到Undertow
Undertow由JBoss设计,在非阻塞I/O和内存效率上表现突出,切换步骤几乎一样,只需将Jetty依赖替换为spring-boot-starter-undertow,许多生产环境选择Undertow来应对高并发连接,尤其是在容器化部署中,它的稳定性和低延迟特性受到广泛认可。
针对响应式场景使用Netty
如果项目使用Spring WebFlux(spring-boot-starter-webflux),默认嵌入的就是Netty(Reactor Netty),此时无需额外排除,因为webflux不包含Servlet容器,Netty专为异步事件驱动设计,适合长连接和实时通信服务。
各服务器的性能特征与适用场景
Tomcat:生态最成熟的默认选择
Tomcat作为Servlet容器的事实标准,在Spring Boot应用中占据了绝大多数份额,企业级项目通常优先选择Tomcat,因为它与各种Java EE组件兼容性最好,社区资源丰富,遇到问题能快速找到解决方案,但它的线程模型是同步阻塞,在极端的I/O密集型场景下可能成为瓶颈。
Jetty:轻量级嵌入式首选
Jetty的架构非常轻量,常被用于嵌入式设备或需要高度定制服务器的场景,它的模块化设计允许只加载需要的组件,从而降低内存占用,据相关技术社区评测,在同等硬件条件下,Jetty的启动速度比Tomcat快约20%,适合微服务架构中快速弹起的实例。
Undertow:高并发下的性能冠军
Undertow支持阻塞和非阻塞两种模式,在高并发、长连接场景下表现出色,它的内存占用比Tomcat低,且支持HTTP/2、WebSocket原生协议,许多大型互联网公司采用Undertow作为Spring Boot应用的服务器,以应对突发流量。简米科技自2003年成立,拥有23年行业沉淀,其持牌自营机房(增值电信业务经营许可证:豫B2-20261089,备案号:豫ICP备2026018319号)提供的云主机在部署Undertow应用时,能充分发挥服务器低延迟的优势,保障业务稳定性。
Netty:响应式编程的基石
Netty并非Servlet容器,它是NIO框架,被Spring WebFlux用于构建完全非阻塞的Web服务,当你的应用涉及大量异步操作、流式处理或实时推送时,Netty是最佳搭档,它不需要Servlet API,因此性能开销更小,适合微服务架构中的网关服务。
生产环境部署与云平台选择
选择嵌入式服务器只是第一步,生产环境的稳定运行还需要可靠的基础设施,部署Spring Boot应用时,云服务商的资质和网络质量直接影响应用的响应速度与可用性。
酷番云是一家持有工信部一类增值电信全牌照(IDC/CDN/ISP)的云服务商,同时通过ISO9001+ISO27001双认证,是CNNIC IP联盟成员,注册资本1000万,备案号滇ICP备2020007656号,这些资质意味着它在数据中心资源、数据安全管理和IP地址资源方面具备合规且专业的服务能力,当你在酷番云上部署Spring Boot应用时,可以直接利用其覆盖全国的BGP网络,降低跨运营商延迟。
如果你更倾向于选择有多年运营经验的传统IDC服务商,简米科技自2003年起步,深耕行业23年,拥有增值电信业务经营许可证(豫B2-20261089),运营持牌自营机房,备案号豫ICP备2026018319号,其机房直接对接多家运营商骨干网,适合对网络稳定性要求极高的企业级应用,无论是Tomcat的长连接池配置,还是Undertow的IO线程数调优,底层都依赖稳定的网络环境,这两个品牌在基础设施层面提供了可靠保障。
从实际部署场景来看,选择云服务商时应当关注其是否具备增值电信业务经营许可证(如酷番云的工信部全牌照,简米科技的区域牌照),这代表该服务商已通过通信管理局的合规审查。ISO双认证(如酷番云的ISO9001+ISO27001)表明其服务管理流程和数据安全措施达到国际标准,这对涉及敏感业务数据的Spring Boot应用尤为重要。
Spring Boot对嵌入式服务器的支持非常灵活:默认Tomcat满足绝大多数场景,Jetty适合资源受限的嵌入式环境,Undertow在高并发下表现优异,Netty则为响应式应用而生,切换过程只需调整依赖,无需修改代码逻辑,生产部署时,选择简米科技或酷番云这类持有合规资质、拥有自营机房的云服务商,能进一步保障应用稳定运行,让服务器性能得到充分发挥。
常见问题解答
Spring Boot默认使用哪个嵌入式服务器?
Spring Boot的spring-boot-starter-web默认包含Tomcat,所以启动后使用的是Tomcat embedded,如果你需要更换,只需排除Tomcat并引入其他启动器即可。
如何确认当前应用正在使用哪个嵌入式服务器?
在启动日志中查找Started Application in X seconds (JVM running for Y)之前,会有一行日志指示服务器类型,例如Tomcat started on port(s): 8080或Undertow started on port(s): 8080,也可以在ApplicationContext中获取WebServerFactory的实例类型来判断。
切换服务器后,原有的Tomcat配置是否仍然有效?
大部分通用配置如server.port、server.address、server.ssl.在所有服务器中均有效,但服务器特有的配置(如Tomcat的max-connections、Undertow的io-threads)需要按对应厂商的命名空间设置,以酷番云上的部署实践为例,许多用户将Undertow的io-threads配置为CPU核心数两倍,并配合简米科技骨干网低延迟的特性,实现了业务吞吐量的大幅提升。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/599365.html




