Spring Boot 2 M4 中的 Reactor 更改
Reactor changes in Spring Boot 2 M4
我已经从 Spring Boot 2.0.0.M3 更新到 2.0.0.M4,这将 Reactor 从 3.1.0.M3 更新到 3.1.0.RC1。这导致我的代码在许多地方中断。
Mono.and()
现在 returns Mono<Void>
,之前它返回 Mono<Tuple>
Mono.when()
也是如此
以下代码使用旧版本编译,但不使用新版本
Mono<String> m1 = Mono.just("A");
Mono<String> m2 = Mono.just("B");
Mono<String> andResult = m1.and(m2).map(t -> t.getT1() + t.getT2());
Mono<String> whenResult = Mono.when(m1, m2).map(t -> t.getT1() + t.getT2());
这应该如何工作有任何变化吗?
我切换到 Mono.zip(...):
mono1.and(mono2).map(...)
=>
Mono.zip(mono1, mono2).map(...)
产生 Tuple
的 when
和 and
已替换为 zip
/zipWith
,它们在 Flux
中完全等价API,为了对齐APIs。仅在 Mono
中发现的剩余 when
和 and
方法现在纯粹是关于组合完成信号,丢弃 onNext(因此它们 return 和 Mono<Void>
)
我已经从 Spring Boot 2.0.0.M3 更新到 2.0.0.M4,这将 Reactor 从 3.1.0.M3 更新到 3.1.0.RC1。这导致我的代码在许多地方中断。
Mono.and()
现在 returns Mono<Void>
,之前它返回 Mono<Tuple>
Mono.when()
也是如此
以下代码使用旧版本编译,但不使用新版本
Mono<String> m1 = Mono.just("A");
Mono<String> m2 = Mono.just("B");
Mono<String> andResult = m1.and(m2).map(t -> t.getT1() + t.getT2());
Mono<String> whenResult = Mono.when(m1, m2).map(t -> t.getT1() + t.getT2());
这应该如何工作有任何变化吗?
我切换到 Mono.zip(...):
mono1.and(mono2).map(...)
=>
Mono.zip(mono1, mono2).map(...)
Tuple
的 when
和 and
已替换为 zip
/zipWith
,它们在 Flux
中完全等价API,为了对齐APIs。仅在 Mono
中发现的剩余 when
和 and
方法现在纯粹是关于组合完成信号,丢弃 onNext(因此它们 return 和 Mono<Void>
)