Daramu
Home
  • 분류 전체보기 (46)
    • 네트워크 (11)
    • 클라우드 (16)
      • AWS (0)
      • Docker (2)
      • Kubernetes (1)
      • Istio (1)
      • Terraform (6)
      • fluent bit (4)
      • NCP (2)
    • 잡소리 (0)
    • 개발 (7)
      • 스프링 시큐리티(Security) (2)
      • 스프링 WebFlux (5)
      • Next.js (0)
    • DevOps (7)
      • Kafka (4)
      • ArgoCD (3)
    • Devloper (4)
      • 자바JAVA (4)
Home
  • 분류 전체보기 (46)
    • 네트워크 (11)
    • 클라우드 (16)
      • AWS (0)
      • Docker (2)
      • Kubernetes (1)
      • Istio (1)
      • Terraform (6)
      • fluent bit (4)
      • NCP (2)
    • 잡소리 (0)
    • 개발 (7)
      • 스프링 시큐리티(Security) (2)
      • 스프링 WebFlux (5)
      • Next.js (0)
    • DevOps (7)
      • Kafka (4)
      • ArgoCD (3)
    • Devloper (4)
      • 자바JAVA (4)
블로그 내 검색

Daramu

다람어의 블로그

  • 개발/스프링 WebFlux

    스프링 부트 - WebFlux 처리 흐름

    2025. 1. 9.

    by. Daramu

     

    MVC vs WebFlux

    1. HttpHandler

    최초에 클라이언트 요청이 들어오면, Netty등의 서버 엔진을 거쳐 HttpHandler가 들어노는 요청을 전달받는다.

    HttpHandler는 Netty이외의 다양한 서버 엔진에서 지원하는 서버 API를 사용할 수 있도록 서버 API를 추상화해주는 역할을 한다.

    따라서 각 서버 엔진마다 주어니는 ServerHttpRequest와 ServerHttpResponse를 포함하는 ServerWebExchange를 생성한 후, webFilter 체인으로 전달한다.

     

    2. WebFilter

    ServerWebExchange는 WebFilter 체인에서 전처리 과정을 거친 후, WebHandler 인터페이스 구현체인 DispatcherHandler에게 전달된다.

     

    3.DispatcherHandler - Flux.fromiterable(handlerMappings)

    Spring MVC의 DispatcherServlet와 유사한 역할을 하는 DispatcherHandler에서는 HandlerMapping List를 원본 Flux 소스로 전달 받는다.

     

    4. DispatcherHandler - .concatMap(getHandler ())

    ServerWebExchange를 처리할 핸들러를 조회

     

    5. DispatcherHandler - .flatMap(invokeHandler ())

    조회한 핸들러의 호출을 HandlerAdapter에게 위임

     

    6. HandlerAdapter

    ServerWebExchange를 처리할 핸들러를 호출

     

    7. 핸들러

    Controller 또는 HandlerFunction 형태의 핸들러에서 요청을 처리한 후, 응답 데이터를 리턴

     

    8. DispatcherHandler - .flatMap(handlerResult())

    핸들러로부터 리턴받은 응답 데이터를 처리할 HandlerResultHandler를 조회

     

    9. HandlerResultHandler

    조회한 HandlerResultHandler가 응답데이터를 처리, response로 리턴

     

     

    실제 핸들러에서 리턴되는 것은 응답데이터를 포함하고 있는 Flux, 혹은 MonoSequence.

     

    저작자표시 (새창열림)

    '개발 > 스프링 WebFlux' 카테고리의 다른 글

    스프링 부트 - MVC vs WebFlux 구현 방식 차이(애너테이션 기반)  (0) 2025.01.09
    스프링 부트 - WebFlux의 Non-Blocking 프로세스 구조  (0) 2025.01.09
    스프링 부트 - WebFlux 핵심 컴포넌트  (0) 2025.01.09
    스프링 부트 - Spring WebFlux 개요  (0) 2025.01.08

    댓글

    관련글

    • 스프링 부트 - MVC vs WebFlux 구현 방식 차이(애너테이션 기반) 2025.01.09
    • 스프링 부트 - WebFlux의 Non-Blocking 프로세스 구조 2025.01.09
    • 스프링 부트 - WebFlux 핵심 컴포넌트 2025.01.09
    • 스프링 부트 - Spring WebFlux 개요 2025.01.08
    맨 위로
전체 글 보기
Tistory 로그인
Tistory 로그아웃
로그아웃 글쓰기 관리

Today

Total

Designed by Nana
블로그 이미지
Daramu

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.