75.1 使用另外的网络服务器

许多Spring Boot程序都包含默认的嵌入式容器。spring-boot-starter-web通过包含spring-boot-starter-tomcat来包含Tomcat。但是,你可以使用spring-boot-starter-jettyspring-boot-starter-undertow来代替。spring-boot-starter-webflux通过包含spring-boot-starter-reactor-netty,包含了Reactor Netty。但是,你可以使用spring-boot-starter-tomcatspring-boot-starter-jetty或者spring-boot-starter-undertow来代替。

许多starter只支持Spring MVC,因此它们将spring-boot-starter-web引入到你的应用程序类路径中。

如果需要使用不同的HTTP服务器,则需要排除默认依赖项,并包含所需的依赖项。Spring Boot为HTTP服务器提供了独立的启动程序,以帮助尽可能简化这个过程。

下面的Maven示例展示了如何在Spring MVC中排除Tomcat并包含Jetty:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    <exclusions>
        <!-- Exclude the Tomcat dependency -->
        <exclusion>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
        </exclusion>
    </exclusions>
</dependency>
<!-- Use Jetty instead -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-jetty</artifactId>
</dependency>

下面的Gradle例子展示了如何在Spring WebFlux中排除Netty并包含Undertow:

configurations {
    // exclude Reactor Netty
    compile.exclude module: 'spring-boot-starter-reactor-netty'
}

dependencies {
    compile 'org.springframework.boot:spring-boot-starter-webflux'
    // Use Undertow instead
    compile 'org.springframework.boot:spring-boot-starter-undertow'
    // ...
}

spring-boot-starter-reactor-netty需要使用WebClient类,所以即使需要包含不同的HTTP服务器,也可能需要保持对Netty的依赖。

最后更新于