Spring Boot 支持哪些内嵌 Servlet 容器

有的时候博客内容会有变动,首发博客是最新的,其他博客地址可能会未同步,认准https://blog.zysicyj.top

全网最细面试题手册,支持艾宾浩斯记忆法。这是一份最全面、最详细、最高质量的 java面试题,不建议你死记硬背,只要每天复习一遍,有个大概印象就行了。 https://store.amazingmemo.com/chapterDetail/1685324709017001`

Spring Boot 支持的内嵌 Servlet 容器

Spring Boot 是一个开源的 Java 基础框架,用于创建独立的、生产级别的基于 Spring 的应用程序。它大大简化了基于 Spring 的应用程序的初始搭建以及开发过程。

Spring Boot 支持以下几种内嵌的 Servlet 容器:

Tomcat

  • 默认的Servlet容器

  • 版本: Spring Boot 2.x 默认使用 Tomcat 9.x;而对于 Spring Boot 1.x 版本,默认使用的是 Tomcat 8.x。

  • 轻量级

  • 提供对 Servlet API 和 JSP API 的支持

Jetty

  • 轻量级且经常被用于微服务架构

  • 相比 Tomcat,启动更快,适合开发和测试环境

  • 支持 WebSocket API

  • 通过排除 Tomcat 并添加相应的 Jetty 依赖来启用

Undertow

  • 提供高性能的非阻塞服务器

  • 支持 Servlet 4.0 规范

  • 可以像使用 Tomcat 和 Jetty 那样,通过添加相应的 Undertow 依赖来启用

选择内嵌的 Servlet 容器

当需要选择一个内嵌的 Servlet 容器时,可以参考以下指南:

  1. 如果需要快速启动和较少的内存消耗: 选择 Jetty 或者 Undertow

  2. 对性能要求较高: 可以考虑使用 Undertow

  3. 需要广泛的社区支持和稳定性: Tomcat 是一个很好的选择。

要切换到不同的内嵌容器,你只需要在你的 build.gradlepom.xml 文件中排除默认的 Tomcat 依赖,并添加你选择的容器依赖。例如,要使用 Jetty,你会这样做:

Maven:

<dependencies>
    <!-- 排除 Tomcat -->
    <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>

    <!-- 添加 Jetty 依赖 -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-jetty</artifactId>
    </dependency>
</dependencies>

Gradle:

dependencies {
    // 排除 Tomcat
    implementation("org.springframework.boot:spring-boot-starter-web") {
        exclude group: "org.springframework.boot", module: "spring-boot-starter-tomcat"
    }

    // 添加 Jetty 依赖
    implementation "org.springframework.boot:spring-boot-starter-jetty"
}

通过以上配置,你可以控制 Spring Boot 使用哪种内嵌的 Servlet 容器。

最后更新于