Mono와 Flux 기초
리액티브 발행자를 이해해 보세요.
Mono와 Flux 기초은(는) CoddyKit의 무료 Spring Boot 4 Microservices & REST APIs 강의입니다. 이것은 4개 중 1번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Spring Boot 4 Microservices & REST APIs 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Spring Boot 4 Microservices & REST APIs 강의에는 총 4개의 강의가 포함되어 있습니다.
이 강의의 일부는 아직 번역되지 않았으며 영어로 표시됩니다.
What is Reactive Programming
Reactive programming is about building non-blocking, asynchronous applications that handle streams of data.
Instead of returning a value directly, a reactive method returns a publisher that emits data over time. The caller subscribes to receive it.
- Threads are not blocked waiting for I/O
- Great for high-concurrency, low-latency services
Project Reactor
Spring WebFlux is built on Project Reactor, which provides two core publisher types:
Mono<T>— emits 0 or 1 itemFlux<T>— emits 0 to N items
Both implement the Reactive Streams Publisher interface.
Creating a Mono
A Mono represents a single (or empty) async result. Use Mono.just() for a known value and Mono.empty() for none.
Mono<String> mono = Mono.just("Hello");
Mono<String> empty = Mono.empty();
mono.subscribe(value -> System.out.println(value));Creating a Flux
A Flux emits many items. Build one from values, an iterable, or a range.
Flux<String> flux = Flux.just("a", "b", "c");
Flux<Integer> range = Flux.range(1, 5);
flux.subscribe(item -> System.out.println(item));Nothing Happens Until Subscribe
Publishers are lazy. The pipeline does nothing until something subscribes.
Calling map() or filter() only describes work. The data flows only when subscribe() is invoked.
Flux<Integer> flux = Flux.range(1, 3)
.map(i -> i * 10);
// no output yet
flux.subscribe(System.out::println); // now it runsTransforming with map
map applies a synchronous function to each emitted item, transforming it one-to-one.
Flux<String> names = Flux.just("alice", "bob")
.map(name -> name.toUpperCase());
names.subscribe(System.out::println);Filtering Items
filter keeps only items that match a predicate.
Flux<Integer> evens = Flux.range(1, 10)
.filter(n -> n % 2 == 0);
evens.subscribe(System.out::println);Mono from a Supplier
Use Mono.fromSupplier() to defer execution of a value-producing function until subscription time.
Mono<Long> now = Mono.fromSupplier(() -> System.currentTimeMillis());
now.subscribe(t -> System.out.println("Time: " + t));Handling Errors
Reactive pipelines signal errors as a terminal event. Use onErrorReturn to supply a fallback value.
Mono<Integer> result = Mono.just("abc")
.map(Integer::parseInt)
.onErrorReturn(-1);
result.subscribe(System.out::println); // -1Subscribe Callbacks
The full subscribe form accepts three callbacks: onNext, onError, and onComplete.
Flux.just(1, 2, 3)
.subscribe(
item -> System.out.println("Next: " + item),
error -> System.err.println("Error: " + error),
() -> System.out.println("Done")
);Blocking for Tests
In tests or simple mains you can convert reactive types to blocking ones with block() or blockFirst().
Avoid block() in production reactive code — it defeats the non-blocking model.
String value = Mono.just("Hi").block();
Integer first = Flux.range(1, 5).blockFirst();Quick Check
Test your understanding of Mono and Flux.
Recap
You learned the foundations of reactive programming with Project Reactor:
Monoemits 0 or 1 item;Fluxemits 0 to N- Publishers are lazy — nothing runs until
subscribe() mapandfilterdescribe transformationsonErrorReturnprovides fallbacks
자주 묻는 질문
“Mono와 Flux 기초” 강의는 무료인가요?
네 — “Mono와 Flux 기초” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Spring Boot 4 Microservices & REST APIs 강의 전체를 잠금 해제할 수 있습니다. Spring Boot 4 Microservices & REST APIs 강의에는 총 4개의 강의가 포함되어 있습니다.
“Mono와 Flux 기초”에서 뭘 배우나요?
리액티브 발행자를 이해해 보세요. 브라우저에서 직접 실행하는 실습 코드로 Spring Boot 4 Microservices & REST APIs을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
Spring Boot 4 Microservices & REST APIs을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 Spring Boot 4 Microservices & REST APIs은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 1번째 강의입니다.
“Mono와 Flux 기초” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 Spring Boot 4 Microservices & REST APIs 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 Spring Boot 4 Microservices & REST APIs 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- Mono와 Flux 기초
- 리액티브 컨트롤러
- 리액티브 호출을 위한 WebClient
- 백프레셔와 연산자