8

我正在尝试在新的 Spring Boot 应用程序中使用 WebFlux 反应类型。我在https://start.spring.io使用了 initializr并选择了 2.0.0-SNAPSHOT 版本。我添加了 web 响应式依赖,我所做的一切都很好。这是一个非常可靠的 POC,目标是如何利用这些类型来现代化我们的 API,为此,我们计划慢慢替换阻塞和/或同步进程的每个部分,并用非阻塞替代实现替换它.

我遇到的问题是,当我尝试将我的 POC 发展成更类似于我们在生产中提供的服务时,许多事情似乎都不起作用。现在我知道 webflux 还不是 GA,我不应该期待所有其他 Spring 项目的完全响应式支持。然而,我确实记得当 webflux 仍然被称为 web-reactive 时,你可以在 undertow/jetty/netty/tomcat/etc 上运行,但现在我使用的是 webflux 启动器,一切都默认为 netty,我没有看到文档调用了解如何将其更改为我们其他服务当前正在使用的嵌入式 tomcat。

是否仍然可以将 spring-boot-starter-webflux 与其他应用程序容器一起使用,或者我现在是否需要手动引导 webflux 才能使用 netty 以外的其他东西?

4

2 回答 2

20

spring-boot-starter-reactor-netty您可以从spring-boot-starter-webflux依赖项中排除并使用spring-boot-starter-tomcatspring-boot-starter-undertow或者spring-boot-starter-jetty代替。

于 2017-04-25T08:04:06.723 回答
4

如果您的目标是使用 tomcat 服务器,则无需排除 spring-boot-starter-reactor-netty。添加 spring boot starter tomcat 将在 Tomcat 服务器中启动应用程序。

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-webflux</artifactId>
        <exclusions>
            <!-- Exclude the Netty dependency -->
            <exclusion>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-reactor-netty</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    <!-- Use Tomcat instead -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-tomcat</artifactId>
    </dependency>
于 2021-02-04T13:21:17.053 回答