Spring WebFluxとReactor Core
Reactor Coreの`Mono`と`Flux`を扱いながら、Spring WebFluxでリアクティブなREST APIを構築します。
「Spring WebFluxとReactor Core」はCoddyKit上の無料Spring Boot 4 Complete Guideレッスンです。 これはレッスン2/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはSpring Boot 4 Complete Guide学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Spring Boot 4 Complete Guideコースには全4レッスンが含まれています。
このレッスンの一部はまだ翻訳されておらず、英語で表示されています。
Reactive Web with Spring WebFlux
Welcome to Spring WebFlux! This framework is Spring's answer to building reactive, non-blocking web applications.
Unlike traditional Spring MVC which uses a servlet-based, blocking model, WebFlux is designed for concurrency and high throughput with fewer threads.
It's perfect for microservices and applications needing to handle many concurrent connections efficiently.
Diving into Reactor Core
At the heart of Spring WebFlux lies Reactor Core. Reactor is a reactive programming library that implements the Reactive Streams specification.
It provides two key types for handling asynchronous data streams:
Mono: For sequences of 0 or 1 item.Flux: For sequences of 0 to N items.
These types represent publishers that emit data, which subscribers then consume.
`Mono`: Zero or One Element
A Mono is a specialized Publisher that can emit at most one item, or complete without emitting any item, or emit an error.
Think of it as an asynchronous container for a single value. It's ideal for operations that return a single result, like fetching a user by ID or performing a single update.
Your First `Mono`
Let's see Mono in action. We create a Mono and then subscribe() to it. The subscribe() method triggers the data flow.
import reactor.core.publisher.Mono;
public class Main {
public static void main(String[] args) {
Mono<String> greetingMono = Mono.just("Hello, Mono!");
// Subscribe to the Mono to consume the data
greetingMono.subscribe(
data -> System.out.println(data), // onNext consumer
error -> System.err.println("Error: " + error), // onError consumer
() -> System.out.println("Mono completed.") // onComplete callback
);
}
}`Flux`: Zero to Many Elements
A Flux is a Publisher that can emit 0 to N items over time, and then optionally terminate with a completion signal or an error.
It's perfect for handling streams of data, like a list of products, real-time events, or database query results that return multiple rows.
Your First `Flux`
Here's an example of creating a Flux from a list of items. Just like Mono, you need to subscribe() to start the emission of data.
import reactor.core.publisher.Flux;
import java.util.Arrays;
import java.util.List;
public class Main {
public static void main(String[] args) {
List<String> fruits = Arrays.asList("Apple", "Banana", "Cherry");
Flux<String> fruitFlux = Flux.fromIterable(fruits);
// Subscribe to the Flux to consume the data stream
fruitFlux.subscribe(
data -> System.out.println(data), // onNext consumer for each item
error -> System.err.println("Error: " + error), // onError consumer
() -> System.out.println("Flux completed.") // onComplete callback
);
}
}Building Reactive Endpoints
Spring WebFlux seamlessly integrates with Reactor Core's Mono and Flux. You can define your REST endpoints to return these reactive types.
When a WebFlux controller method returns a Mono or Flux, Spring handles the subscription and streaming of data automatically, allowing for non-blocking I/O.
Endpoint Returning `Mono`
Here's how you'd create a simple WebFlux endpoint that returns a Mono<String>. This endpoint would respond with a single string asynchronously.
Note: This code snippet is part of a Spring Boot application and cannot be run in isolation.
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import reactor.core.publisher.Mono;
@RestController
public class HelloController {
@GetMapping("/hello-mono")
public Mono<String> getHelloMono() {
// Simulate a non-blocking operation that returns a single greeting
return Mono.just("Hello from Mono endpoint!");
}
}Endpoint Returning `Flux`
For endpoints that need to stream multiple items, you can return a Flux<T>. WebFlux will handle sending these items as they become available, often using Server-Sent Events (SSE).
Note: This code snippet is part of a Spring Boot application and cannot be run in isolation.
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import reactor.core.publisher.Flux;
import java.time.Duration;
@RestController
public class HelloController {
@GetMapping(value = "/hello-flux", produces = "text/event-stream")
public Flux<String> getHelloFlux() {
// Emit 5 items, one every second
return Flux.interval(Duration.ofSeconds(1))
.map(sequence -> "Item " + sequence + " from Flux!")
.take(5);
}
}Check Your Knowledge
Let's test your understanding of Spring WebFlux and Reactor Core.
Recap: WebFlux & Reactor Core
In this lesson, you've learned about the core components of reactive programming with Spring Boot:
- Spring WebFlux: The non-blocking web framework.
- Reactor Core: The underlying library providing reactive types.
Mono: For handling 0 or 1 data item.Flux: For handling 0 to N data items.
You also saw how to define reactive endpoints in WebFlux controllers by returning Mono and Flux.
AI チューターと学ぶ Java — 無料
ブラウザでリアルコードを書いて実行し、24/7 の AI チューターから瞬時にサポートを受け、ウェブまたはアプリで続きから学習できます。
- コース
- 21
- レッスン
- 84
よくある質問
「Spring WebFluxとReactor Core」レッスンは無料ですか?
はい。「Spring WebFluxとReactor Core」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Spring Boot 4 Complete Guideコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Spring Boot 4 Complete Guideコースには全4レッスンが含まれています。
「Spring WebFluxとReactor Core」で何を学びますか?
Reactor Coreの`Mono`と`Flux`を扱いながら、Spring WebFluxでリアクティブなREST APIを構築します。 ブラウザで直接実行するハンズオンコードでSpring Boot 4 Complete Guideを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Spring Boot 4 Complete Guideを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのSpring Boot 4 Complete Guideは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン2/4です。
「Spring WebFluxとReactor Core」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このSpring Boot 4 Complete Guideレッスンでコードを書いて実行できますか?
はい。すべてのSpring Boot 4 Complete Guideレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- リアクティブプログラミング入門
- Spring WebFluxとReactor Core
- リアクティブなデータアクセスと統合
- Reactive Streamsのバックプレッシャーとエラーハンドリング