一尘不染

spring-boot-starter-web和spring-boot-starter-webflux不能一起工作吗?

spring-boot

当我开始学习spring-webflux时,我对这个组件有疑问。

我构建了一个简单的项目,使用Maven来管理该项目,并添加有关spring-boot-starter-web和spring-boot-starter-
webflux的依赖项,例如:

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-webflux</artifactId>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

但这是行不通的。当删除spring-boot-starter-web依赖项时,它可以很好地工作。


阅读 1300

收藏
2020-05-30

共1个答案

一尘不染

有关WebFlux的Spring Boot参考文档部分所述,同时添加web和webflux启动器将配置Spring MVC
Web应用程序。

之所以这样,是因为许多现有的Spring Boot Web应用程序(使用MVC)将依赖webflux启动器来使用WebClient。Spring
MVC部分支持反应式返回类型
,因此这是一个预期的用例。相反的情况并非如此,因为反应性应用程序不太可能使用Spring MVC位。

因此,支持同时使用web和webflux启动器,但它将配置Spring MVC应用程序。您可以始终强制Spring Boot应用程序对以下内容做出反应:

SpringApplication.setWebApplicationType(WebApplicationType.REACTIVE)

但是清理依赖关系仍然是一个好主意,因为在响应式Web应用程序中使用阻止功能很容易。

2020-05-30