0Pricing
Spring Boot 4 Microservices & REST APIs · درس

أساسيات Mono وFlux

افهم الناشرين التفاعليين

أساسيات Mono وFlux درس مجاني في Spring Boot 4 Microservices & REST APIs على CoddyKit. هذا هو الدرس 1 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في 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 item
  • Flux<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 runs

Transforming 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); // -1

Subscribe 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:

  • Mono emits 0 or 1 item; Flux emits 0 to N
  • Publishers are lazy — nothing runs until subscribe()
  • map and filter describe transformations
  • onErrorReturn provides fallbacks

الأسئلة الشائعة

هل درس «أساسيات Mono وFlux» مجاني؟

نعم — نص درس «أساسيات Mono وFlux» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Spring Boot 4 Microservices & REST APIs، انتقل إلى CoddyKit PRO. تتضمن دورة Spring Boot 4 Microservices & REST APIs 4 دروس في المجموع.

ماذا ستتعلم في «أساسيات Mono وFlux»؟

افهم الناشرين التفاعليين تتمرن على Spring Boot 4 Microservices & REST APIs مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Spring Boot 4 Microservices & REST APIs؟

لا تُشترط خبرة سابقة. Spring Boot 4 Microservices & REST APIs على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 1 من أصل 4.

كم من الوقت يستغرق درس «أساسيات Mono وFlux»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Spring Boot 4 Microservices & REST APIs هذا؟

نعم. كل درس في Spring Boot 4 Microservices & REST APIs يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. أساسيات Mono وFlux
  2. وحدات التحكم التفاعلية
  3. WebClient للاستدعاءات التفاعلية
  4. الضغط العكسي والعوامل
← العودة إلى Spring Boot 4 Microservices & REST APIs