Following functions are used to transform Flux/Mono to generate a target Flux/Mono:
Flux
Mono
public final <V> Flux<V> transform(Function<? super Flux<T>,? extends Publisher<V>> transformer)
public final <V> Mono<V> transform(Function<? super Mono<T>,? extends Publisher<V>> transformer)
The advantage of using above methods over map() is that transform() methods can be used to reuse and mutualize code.
public class TransformExample { public static void main(String[] args) { System.out.println("-- Transforming Flux --"); Function<Flux<Integer>, Flux<Integer>> transformingFluxFunction = flux -> flux.map(i -> i * 2); Flux.just(2, 4, 6, 8) .transform(transformingFluxFunction) .subscribe(System.out::println); System.out.println("-- Transforming Mono --"); Function<Mono<String>, Mono<Integer>> transformingMonoFunction = mono -> mono.map(s -> s.length()); Mono.just("supercalifragilisticexpialidocious") .transform(transformingMonoFunction) .subscribe(System.out::println); } }
-- Transforming Flux --481216-- Transforming Mono --34
Dependencies and Technologies Used: