SpringBoot——替换嵌入式的Servlet容器

导读:本篇文章讲解 SpringBoot——替换嵌入式的Servlet容器,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

SpringBoot官方文档——Use Another Web Server

1 前言

SpringBoot 的Web模块默认使用 Tomcat作为内嵌的Servlet容器,同时,SpringBoot还支持Jetty、Undertow等Servlet容器。

tomcat、undertow、jetty性能对比

Tomcat:是最稳定的服务器,而不是网上各种博主说的Undertow更优。

Jetty:更适合长连接的服务,但是长连接我更倾向于选择Jetty。

Undertow:更适合用于IO密集型服务器,或者文件服务器使用Undertow会是一个不错的选择。

所以,在一般情况下还是老老实实的使用Springboot默认的Tomcat吧。

2 替换为其他嵌入式Servlet容器

以Jetty为例

我们可以把Tomcat的相关依赖在pom.xml中的spring-boot-starter-web中剔除掉,使环境不再拥有Tomcat依赖,同时加入Jetty的依赖那么就能使Jetty作为满足条件被SpringBoot选择了。
a1wxyT.png
嵌入式Servlet容器的自动配置原理 GO!!!

2.1 Tomcat(默认使用)

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    <!-- 引入web模块默认就是使用嵌入式的Tomcat作为Servlet容器 -->
</dependency>

2.2 替换为 Jetty

<!-- Jetty 9.4不支持Servlet 4.0 -->
<properties>
    <java.version>1.8</java.version>
    <servlet-api.version>3.1.0</servlet-api.version>
</properties>

<!‐‐ 引入web模块 ‐‐>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring‐boot‐starter‐web</artifactId>
    <!-- 排除 Tomcat依赖 -->
    <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>

注意:

Servlet API的版本已被覆盖,因为与Tomcat 9和Undertow 2.0不同,Jetty 9.4不支持Servlet 4.0

2.3 替换为 Undertow

<!‐‐ 引入web模块 ‐‐>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring‐boot‐starter‐web</artifactId>
    <!-- 排除 Tomcat依赖 -->
    <exclusions>
        <exclusion>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
        </exclusion>
    </exclusions>
</dependency>

<!‐‐引入Undertow‐‐>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-jetty</artifactId>
</dependency>

2.4 替换成功控制台打印结果

a1rEpn.png

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/69768.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!