Rientrato dalle ferie, sono pronto per partire con la mia personale rubrica di Java Pills! 🎉 Per scaldare i motori, iniziamo con qualcosa di leggero ma decisamente utile sulla programmazione reattiva.

🔍 Perché usare doOnNext?

Il metodo doOnNext di WebFlux è utilizzato per eseguire delle azioni secondarie per ogni elemento che viene emesso da un publisher, come un Flux o un Mono, senza alterare il flusso di dati. È spesso usato per operazioni di logging, aggiornamenti di metadati, side-effect o altre azioni che devono essere eseguite per ogni elemento emesso.

Esempio: immagina di dover aggiornare la targa di un'auto.

Codice originale (non ottimale):

Mono.just(licensePlate)
    .map(plate -> {
        sampleCar.setLicensePlate(plate);
        return plate;
    })
    .map(plate -> ...);

Codice migliorato usando il costrutto doOnNext:

Mono.just(licensePlate)
    .doOnNext(sampleCar::setLicensePlate)
    .map(plate -> ...);

L'uso di doOnNext in questo contesto migliora la leggibilità e la manutenibilità del codice, rendendo più evidente che sampleCar.setLicensePlate è una conseguenza dell'emissione del valore e non una trasformazione del valore stesso!