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的依赖。