我可以同时使用SpringMvc和webflux吗?
2022-09-01 01:02:36
我想在一个项目中使用2种方法(反应式和标准式)。
我尝试将一个 REST API 端点迁移到反应式 webflux,并在迁移其余端点之前测试性能。但它没有奏效。我为他添加了路由器和处理程序,但在我没有从依赖项中删除并禁用之前,我一直得到http代码。这可能吗?还是应该将所有项目迁移到反应式方法?spring-boot-starter-web@RestController404
我想在一个项目中使用2种方法(反应式和标准式)。
我尝试将一个 REST API 端点迁移到反应式 webflux,并在迁移其余端点之前测试性能。但它没有奏效。我为他添加了路由器和处理程序,但在我没有从依赖项中删除并禁用之前,我一直得到http代码。这可能吗?还是应该将所有项目迁移到反应式方法?spring-boot-starter-web@RestController404
如 Spring Boot 参考文档中所述,如果 MVC 和 WebFlux 都可用,则 Spring Boot 将自动配置 Spring MVC 应用程序。这有几个原因:
根据您要实现的目标,可能有几种方法可以解决这个问题。
如果您想使用来优化多个并发远程HTTP调用并使用Reacter运算符,则可以继续使用Spring MVC注释控制器并返回反应式类型作为返回值(在此Spring Boot讨论中将对此进行详细介绍)。WebClient
如果你想处理纯粹的可伸缩性和延迟(所以不一定是原始吞吐量),那么你可以开始使用并从那里开始工作。请注意,禁止使用阻塞 API(如阻塞数据库调用),并且包装那些在单独的线程池上工作的或 和调度的 API 将在性能方面对您不利。spring-boot-starter-webfluxFluxMono
最后,如果你想使用Spring WebFlux提供的函数式方法,那么它不一定能表现得更好。这实际上取决于您的用例以及您如何实现它。