8.2.2. 嵌入式反应式服务器支持

Spring Boot 支持以下嵌入式反应式 Web 服务器:Reactor Netty、Tomcat、Jetty 和 Undertow。大多数开发人员使用适当的“Starter”来获取完全配置的实例。默认情况下,嵌入式服务器在端口 8080 上侦听 HTTP 请求。

定制反应式服务器

常见的反应式 Web 服务器设置可以使用 SpringEnvironment属性进行配置。通常,您可以在您的application.propertiesapplication.yaml文件中定义属性。

常见的服务器设置包括:

  • 网络设置:传入 HTTP 请求的侦听端口 ( server.port)、要绑定的接口地址 ( server.address) 等。

  • 错误管理:错误页面的位置(server.error.path)等。

Spring Boot 尝试尽可能多地公开通用设置,但这并不总是可行。对于这些情况,专用命名空间(例如server.netty.*提供特定于服务器的定制)。

请参阅ServerProperties课程以获取完整列表。

程序化定制

如果您需要以编程方式配置反应式 Web 服务器,您可以注册一个实现 WebServerFactoryCustomizer 接口的 Spring bean。 WebServerFactoryCustomizer 提供对 ConfigurableReactiveWebServerFactory 的访问,其中包括许多自定义 setter 方法。以下示例显示以编程方式设置端口:

@Component
public class MyWebServerFactoryCustomizer implements WebServerFactoryCustomizer<ConfigurableReactiveWebServerFactory> {

    @Override
    public void customize(ConfigurableReactiveWebServerFactory server) {
        server.setPort(9000);
    }

}

JettyReactiveWebServerFactoryNettyReactiveWebServerFactoryTomcatReactiveWebServerFactoryUndertowReactiveWebServerFactory是它们的专用变体,ConfigurableReactiveWebServerFactory分别为 Jetty、Reactor Netty、Tomcat 和 Undertow 提供了额外的自定义 setter 方法。以下示例展示了如何进行自定义NettyReactiveWebServerFactory以提供对 Reactor Netty 特定配置选项的访问:

@Component
public class MyNettyWebServerFactoryCustomizer implements WebServerFactoryCustomizer<NettyReactiveWebServerFactory> {

    @Override
    public void customize(NettyReactiveWebServerFactory factory) {
        factory.addServerCustomizers((server) -> server.idleTimeout(Duration.ofSeconds(20)));
    }

}

直接自定义 ConfigurableReactiveWebServerFactory

对于需要从ReactiveWebServerFactory 扩展的更高级用例,您可以自己公开此类类型的 bean。

为许多配置选项提供了设置器。如果您需要做一些更奇特的事情,还提供了几个受保护的方法“挂钩”。详细信息请参见源代码文档。

自动配置的定制器仍然应用于您的定制工厂,因此请谨慎使用该选项。

最后更新于