Java 我可以同时使用SpringMvc和webflux吗?

Java 我可以同时使用SpringMvc和webflux吗?,java,spring-boot,reactive-programming,spring-webflux,project-reactor,Java,Spring Boot,Reactive Programming,Spring Webflux,Project Reactor,我想在一个项目中使用两种方法(反应式和标准式) 我尝试将一个RESTAPI端点迁移到反应式webflux,并在迁移其余端点之前测试性能。但它不起作用。我为他添加了路由器和处理程序,但直到我没有从依赖项中删除springbootstarterweb并禁用@RestController之前,我一直得到http404代码。有没有可能?还是应该将所有项目迁移到反应式方法?如Spring Boot参考文档中所述。这有几个原因: Spring MVC无法在Netty上运行 两个基础架构将竞争相同的工作(例

我想在一个项目中使用两种方法(反应式和标准式)


我尝试将一个RESTAPI端点迁移到反应式webflux,并在迁移其余端点之前测试性能。但它不起作用。我为他添加了路由器和处理程序,但直到我没有从依赖项中删除
springbootstarterweb
并禁用
@RestController
之前,我一直得到http
404
代码。有没有可能?还是应该将所有项目迁移到反应式方法?

如Spring Boot参考文档中所述。这有几个原因:

  • Spring MVC无法在Netty上运行
  • 两个基础架构将竞争相同的工作(例如,服务静态资源、映射等)
  • 在同一个容器中混合这两个运行时模型不是一个好主意,可能会执行得不好或根本不起作用
根据您试图实现的目标,可能有几种方法来实现这一点

如果您想使用
WebClient
来优化多个并发远程HTTP调用,并使用Reactor操作符,那么可以继续使用Spring MVC注释控制器,并将反应类型作为返回值()返回

如果您希望处理纯可伸缩性和延迟(因此不一定是原始吞吐量),那么您可以开始使用
springbootstarterwebflux
,并从那里开始工作。请注意,禁止使用阻塞API(如阻塞数据库调用),使用
Flux
Mono
包装这些API,并安排在单独的线程池上工作,这将在性能方面对您不利

最后,如果您想使用SpringWebFlux提供的函数方法,那么它的性能并不一定会更好。这实际上取决于您的用例以及您如何实现它