当我开始学习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依赖时,它可以很好地工作。
发布于 2018-07-17 18:03:23
正如the Spring Boot reference documentation section about WebFlux中所解释的,同时添加web和webflux启动器将配置Spring MVC web应用程序。
这样做是因为许多现有的Spring Boot web应用程序(使用MVC)将依赖于webflux starter来使用WebClient。Spring MVC partially support reactive return types,所以这是一个预期的用例。事实并非如此,因为响应式应用程序不太可能使用Spring MVC位。
因此,支持同时使用web和webflux启动器,但它将配置一个Spring MVC应用程序。您可以始终强制Spring Boot应用程序使用以下命令进行响应:
SpringApplication.setWebApplicationType(WebApplicationType.REACTIVE)但清理依赖关系仍然是一个好主意,因为在反应式web应用程序中使用阻塞功能会很容易。
发布于 2020-01-28 22:37:06
我在使用spring-boot-starter-webflux和spring-data-geode时遇到了类似的问题,导致
DEBUG [http-nio-8082-exec-2] org.sprin.web.servl.resou.ResourceHttpRequestHandler 454 handleRequest: Resource not found已通过更改应用程序类型解决此问题
@SpringBootApplication
public class Web {
public static void main(String[] args) {
SpringApplication app = new SpringApplication(Web.class);
app.setWebApplicationType(WebApplicationType.REACTIVE);
SpringApplication.run(Web.class, args);
}
}整个类看起来像这样

在设置应用程序类型之后,如果我没有以静态方式调用SpringApplication,我会得到如下结果:

https://stackoverflow.com/questions/51377675
复制相似问题