De basis van Mono en Flux
Begrijp reactieve publishers.
De basis van Mono en Flux is een gratis Spring Boot 4-microservices en REST-API's-les op CoddyKit. Dit is les 1 van 4. Je kunt de volledige les hieronder gratis lezen en daarna in de browser praktisch oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject Spring Boot 4-microservices en REST-API's. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus Spring Boot 4-microservices en REST-API's bevat in totaal 4 lessen.
Wat is reactief programmeren
Reactief programmeren draait om het bouwen van niet-blokkerende, asynchrone toepassingen die gegevensstromen verwerken.
In plaats van rechtstreeks een waarde terug te geven, retourneert een reactieve methode een publisher die in de loop van de tijd gegevens uitzendt. De aanroeper abonneert zich om deze te ontvangen.
- Threads worden niet geblokkeerd terwijl ze op I/O wachten
- Ideaal voor diensten met veel gelijktijdige verzoeken en lage latentie
Project Reactor
Spring WebFlux is gebouwd op Project Reactor, dat twee belangrijke typen publishers biedt:
Mono<T>— zendt 0 of 1 item uitFlux<T>— zendt 0 tot N items uit
Beide implementeren de Publisher-interface van Reactive Streams.
Een Mono maken
Een Mono stelt één asynchroon resultaat voor, of een leeg resultaat. Gebruik Mono.just() voor een bekende waarde en Mono.empty() als er geen waarde is.
Mono<String> mono = Mono.just("Hello");
Mono<String> empty = Mono.empty();
mono.subscribe(value -> System.out.println(value));Een Flux maken
Een Flux zendt meerdere items uit. Bouw er een op basis van waarden, een iterable of een bereik.
Flux<String> flux = Flux.just("a", "b", "c");
Flux<Integer> range = Flux.range(1, 5);
flux.subscribe(item -> System.out.println(item));Er gebeurt niets vóór subscribe
Publishers zijn lui. De pipeline doet niets totdat iets zich abonneert.
Het aanroepen van map() of filter() beschrijft alleen het werk. De gegevens stromen pas wanneer subscribe() wordt aangeroepen.
Flux<Integer> flux = Flux.range(1, 3)
.map(i -> i * 10);
// no output yet
flux.subscribe(System.out::println); // now it runsTransformeren met map
map past een synchrone functie toe op elk uitgezonden item en transformeert elk item naar precies één ander item.
Flux<String> names = Flux.just("alice", "bob")
.map(name -> name.toUpperCase());
names.subscribe(System.out::println);Items filteren
filter behoudt alleen items die overeenkomen met een predicaat.
Flux<Integer> evens = Flux.range(1, 10)
.filter(n -> n % 2 == 0);
evens.subscribe(System.out::println);Een Mono uit een Supplier
Gebruik Mono.fromSupplier() om de uitvoering van een functie die een waarde oplevert uit te stellen tot het moment van abonneren.
Mono<Long> now = Mono.fromSupplier(() -> System.currentTimeMillis());
now.subscribe(t -> System.out.println("Time: " + t));Fouten afhandelen
Reactieve pipelines signaleren fouten als een terminale gebeurtenis. Gebruik onErrorReturn om een terugvalwaarde te leveren.
Mono<Integer> result = Mono.just("abc")
.map(Integer::parseInt)
.onErrorReturn(-1);
result.subscribe(System.out::println); // -1Callbacks voor subscribe
De volledige vorm van subscribe accepteert drie callbacks: onNext, onError en onComplete.
Flux.just(1, 2, 3)
.subscribe(
item -> System.out.println("Next: " + item),
error -> System.err.println("Error: " + error),
() -> System.out.println("Done")
);Blokkeren voor tests
In tests of eenvoudige main-methoden kun je reactieve typen met block() of blockFirst() omzetten in blokkerende typen.
Vermijd block() in productiecode met reactieve werking — daarmee ondermijn je het niet-blokkerende model.
String value = Mono.just("Hi").block();
Integer first = Flux.range(1, 5).blockFirst();Korte controle
Test je begrip van Mono en Flux.
Samenvatting
Je hebt de grondbeginselen van reactief programmeren met Project Reactor geleerd:
Monozendt 0 of 1 item uit;Fluxzendt 0 tot N items uit- Publishers zijn lui — er wordt niets uitgevoerd totdat
subscribe()wordt aangeroepen mapenfilterbeschrijven transformatiesonErrorReturnlevert terugvalwaarden
Leer Java met een AI-tutor — gratis
Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.
- Cursussen
- 24
- Lessen
- 93
Veelgestelde vragen
Is de les “De basis van Mono en Flux” gratis?
Ja — de volledige tekst van “De basis van Mono en Flux” kun je hier gratis op het web lezen. Als je interactief wilt oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is, en de rest van de cursus Spring Boot 4-microservices en REST-API's wilt ontgrendelen, kun je upgraden naar CoddyKit PRO. De cursus Spring Boot 4-microservices en REST-API's bevat in totaal 4 lessen.
Wat leer ik in “De basis van Mono en Flux”?
Begrijp reactieve publishers. Je oefent met Spring Boot 4-microservices en REST-API's door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.
Heb ik ervaring nodig om met Spring Boot 4-microservices en REST-API's te beginnen?
Ervaring vooraf is niet nodig. Spring Boot 4-microservices en REST-API's op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 1 van 4.
Hoe lang duurt de les “De basis van Mono en Flux”?
De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.
Kan ik code schrijven en uitvoeren in deze les over Spring Boot 4-microservices en REST-API's?
Ja. Elke les over Spring Boot 4-microservices en REST-API's bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.
Alle lessen in deze cursus
- De basis van Mono en Flux
- Reactieve controllers
- WebClient voor reactieve aanroepen
- Backpressure en operators