为什么 Spring Boot 有两种不同的 ReactiveX 实现?

Why does Spring Boot have two different ReactiveX implementations?

Spring Boot 有两个不同的依赖项,每个都实现 the same API: Project Reactor and RxJava 2. You can verify the dependencies in spring boot here。那么为什么要重复呢?

是否有理由在实践中使用一个而不是另一个?

请记住,这不是直接和强制性的依赖关系,而是 一个 BOM,它管理哪些版本是首选,并且适用于此版本的 Spring Boot。如果您不使用 RxJava2(或明确使用的 Spring 项目),则不会引入依赖项。如果你这样做,并且你没有指定版本,你将从 link.

中提取一个

现在,为什么你会问 RxJava2 AND Reactor Spring Framework 的 WebFlux 堆栈构建在 Reactor 之上,但 Spring 一直都是关于 选择 。由于 RxJava2 和 Reactor 都实现了 Reactive Streams specification,因此它们是可互操作的。因此,如果您希望用户代码处理 RxJava2 类型(甚至 RxJava 1 类型),Spring 将为您完成转换。

管道仍然使用 Reactor 完成,因此它也是您使用的首选实现,但这取决于您。