본문 바로가기

개발중/Spring Boot

Mono와 Flux의 차이점과 활용법 - Spring WebFlux

728x90
반응형

 

Flux와 Mono

Spring WebFlux의 Flux와 Mono는 반응형 프로그래밍 모델의 두 가지 주요 구성 요소입니다.


Mono

Mono는 0 또는 1개의 요소를 비동기적으로 제공하는 Publisher입니다. 단일 값 또는 빈 값의 비동기 처리를 나타냅니다.

Mono<String> mono = Mono.just("Hello, Mono!");
mono.subscribe(System.out::println);

 

 

Flux

Flux는 0개 이상의 요소를 비동기적으로 제공하는 Publisher입니다. 여러 값의 스트림을 처리할 때 사용됩니다.

Flux<String> flux = Flux.just("Hello", "Flux", "World!");
flux.subscribe(System.out::println);

 

 

예제 코드

Mono 예제

Mono<String> monoExample = Mono.just("Single Value");
monoExample.subscribe(System.out::println);

 

 

Flux 예제

Flux<String> fluxExample = Flux.just("Value 1", "Value 2", "Value 3");
fluxExample.subscribe(System.out::println);

 

 

주요 차이점

두 가지 모두 비동기 및 반응형 프로그래밍을 지원하여 효율적인 리소스 사용과 높은 성능을 제공합니다.

 

  • Mono
    • 단일 값 또는 빈 값 처리
  • Flux
    • 다중 값 스트림 처리




WebClient와 함께 사용

public Mono<String> fetchData() {
    return webClient.get()
            .uri("/endpoint")
            .retrieve()
            .bodyToMono(String.class);
}

public Flux<String> fetchAllData() {
    return webClient.get()
            .uri("/all-data")
            .retrieve()
            .bodyToFlux(String.class);
}

 

 

Spring WebFlux 공식 문서

 

 

728x90
반응형