天天看點

Spring Boot:替換Web伺服器

​Spring Boot​

​​應用包含預設的嵌入式​

​Web​

​容器。

  • 對于​

    ​servlet​

    ​​應用,​

    ​spring-boot-starter-web​

    ​​通過依賴​

    ​spring-boot-starter-tomcat​

    ​​來包含​

    ​Tomcat​

    ​​,可以替換成​

    ​spring-boot-starter-jetty​

    ​​或​

    ​spring-boot-starter-undertow​

    ​。
  • 對于​

    ​reactive​

    ​​應用,​

    ​spring-boot-starter-webflux​

    ​​通過依賴​

    ​spring-boot-starter-reactor-netty​

    ​​來包含​

    ​Reactor Netty​

    ​​,可以替換成​

    ​spring-boot-starter-tomcat​

    ​​、​

    ​spring-boot-starter-jetty​

    ​​或​

    ​spring-boot-starter-undertow​

    ​。

​Spring Boot​

​​基于​

​servlet​

​​和​

​reactive​

​​應用提供的​

​Web​

​伺服器工廠:

Server Servlet Reactive
Tomcat TomcatServletWebServerFactory TomcatReactiveWebServerFactory
Jetty JettyServletWebServerFactory JettyReactiveWebServerFactory
Undertow UndertowServletWebServerFactory UndertowReactiveWebServerFactory
Reactor 不支援 NettyReactiveWebServerFactory

當切換到不同的​

​HTTP​

​​伺服器時,需要将預設依賴項替換為所需的依賴項,為了幫助完成這個過程,​

​Spring Boot​

​​為每個受支援的​

​HTTP​

​​伺服器提供了一個單獨的啟動程式。下面的​

​Maven​

​​示例展示了如何将​

​Tomcat​

​​伺服器替換成​

​Jetty​

​伺服器:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.6.2</version>
    </parent>

    <packaging>jar</packaging>

    <groupId>com.kaven</groupId>
    <artifactId>springboot</artifactId>
    <version>0.0.1-SNAPSHOT</version>

    <name>springboot</name>
    <description>springboot</description>

    <properties>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <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>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>
    </dependencies>
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>      
Spring Boot:替換Web伺服器

請求也可以正常處理。

Spring Boot:替換Web伺服器