为什么 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 完成,因此它也是您使用的首选实现,但这取决于您。
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 完成,因此它也是您使用的首选实现,但这取决于您。