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

2024. 6. 11. 13:34·개발중/Spring Boot
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
반응형
저작자표시 (새창열림)

'개발중 > Spring Boot' 카테고리의 다른 글

Spring Cache 이해하고 사용하기: 성능 최적화를 위한 데이터 캐싱 도구  (0) 2024.11.19
ApplicationListener 를 이용해서 어플리케이션 기동시 에러날 경우에 대처하기.  (0) 2024.09.19
Spring Boot 3와 WebClient: 비동기식 HTTP 요청을 쉽게 구현하기  (0) 2024.06.11
Spring Project 의 MyBatis 쿼리를 Console 에 찍는 설정 (log4j2)  (1) 2023.12.30
Spring 환경에서 프로파일 별 효율적 코드 관리 전략  (1) 2023.12.08
'개발중/Spring Boot' 카테고리의 다른 글
  • Spring Cache 이해하고 사용하기: 성능 최적화를 위한 데이터 캐싱 도구
  • ApplicationListener 를 이용해서 어플리케이션 기동시 에러날 경우에 대처하기.
  • Spring Boot 3와 WebClient: 비동기식 HTTP 요청을 쉽게 구현하기
  • Spring Project 의 MyBatis 쿼리를 Console 에 찍는 설정 (log4j2)
Binsoo
Binsoo
내 트러블 슈팅
  • Binsoo
    정수빈 기술블로그임.
    Binsoo
  • 전체
    오늘
    어제
    • 빈수 개발자 개발 일기 (932)
      • 개발중 (634)
        • Spring Boot (95)
        • Spring Security (2)
        • Spring Batch (6)
        • Spring Boot & Redis (13)
        • Java Persistence API (JPA) (28)
        • Web (42)
        • Rest Api (7)
        • Spring Concurrency Control (3)
        • Redis (8)
        • Kubernetes (k8s) (4)
        • MYSQL (35)
        • AirFlow (15)
        • Docker (2)
        • Git (22)
        • Linux (9)
        • JSON Web Tokens (JWT) (4)
        • Troubleshooting (87)
        • Swagger (0)
        • Vue.js (52)
        • Java (74)
        • html (12)
        • C (5)
        • jQuery (15)
        • JavaServer Pages (JSP) (17)
        • Arduino (1)
        • JavaScript (35)
        • Amazon Web Services (AWS) (11)
        • Algorithm (9)
        • 참고 기능 (18)
        • mongo (2)
      • PROJECT (27)
        • 스프링부트+JPA+몽고 API 개발 (3)
        • MINI (2)
        • 게시판 (3)
        • vue 프로젝트 (1)
        • JPA 사이드 프로젝트 기록 (17)
      • TEAM STUDY (156)
        • 가상 면접 사례로 배우는 대규모 시스템 설계 기초 (8)
        • 한 권으로 읽는 컴퓨터 구조와 프로그래밍 (12)
        • NAVER DEVELOPER (4)
        • LINUX (23)
        • PYTHON (19)
        • SERVER (8)
        • 알고리즘 코딩 테스트 스터디 (31)
        • 쿠버네티스 (40)
        • 대세는 쿠버네티스 [초급~중급] (11)
      • BOOK (0)
      • 자격증 (61)
        • 리눅스 1급 - 필기 기록 (19)
        • 네트워크 관리사 (2)
        • 네트워크 관리사 2급 - 실기 기록 (21)
        • 네트워크 관리사 2급 - 필기 기록 (16)
        • 정보처리 (2)
      • 직장인 대학원 (17)
        • 기록 (1)
        • 캐글 스터디 (3)
        • R (12)
  • 블로그 메뉴

    • 홈
    • 태그
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    VUE
    docker
    네트워크 관리사 요약
    파이썬
    파이썬 알고리즘
    Spring
    리눅스 1급 요약
    리눅스 마스터
    REST API
    네트워크 관리사 자격증
    리눅스 마스터 1급 정리
    쿠버네티스
    redis
    쿠버네티스 스터디
    네트워크 관리사 학점
    네트워크 관리사
    네트워크 관리사 실기
    네트워크 관리사 2급 실기
    리눅스 마스터 1급
    네트워크 관리사 2급
    리눅스 마스터 요약
    리눅스 마스터 1급 요약
    jpa
    java
    스프링
    BackendDevelopment
    Git 저장소
    git
    알고리즘
    springboot
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
Binsoo
Mono와 Flux의 차이점과 활용법 - Spring WebFlux
상단으로

티스토리툴바