• 티스토리 홈
starryeye
  • 프로필사진
    starryeye
    • 분류 전체보기 (189)
      • C++ (17)
      • Java (24)
      • OOP (5)
      • Spring Reactive Stack (12)
        • Reactive Streams (3)
        • Netty (4)
        • Reactor (1)
        • Webflux (3)
        • DB, Cache 연동 (1)
      • Spring (90)
        • Core (17)
        • MVC (33)
        • Client (2)
        • Security (4)
        • DB, Cache 연동 (33)
      • DataBase (12)
        • RDBMS (2)
        • NoSQL (10)
      • Message Broker (6)
      • Web (4)
      • Network (4)
      • 대규모 시스템 설계 (15)
  • 방문자 수
    • 전체:
    • 오늘:
    • 어제:
  • 최근 댓글
      등록된 댓글이 없습니다.
    • 최근 공지
        등록된 공지가 없습니다.
      # Home
      # 공지사항
      #
      # 태그
      # 검색결과
      # 방명록
      • WebHandler 와 Netty 의 관계
        2024년 03월 09일
        • starryeye
        • 작성자
        • 2024.03.09.:21
        반응형

         

        WebHandler 에 대해 알아보겠다.

        WebHandler 는 ..

        Spring 5 부터 제공하는 web request 를 처리하는데 사용할 수 있는 인터페이스이다.

         

        보통 Spring Reactive stack 에서 사용된다.

        Project Reactor 의 Reactor 에 의존한다. (Mono)

         

        파라미터로 ServerWebExchange 는..

        ServerHttpRequest, ServerHttpResponse 등을 얻을 수 있는 메서드를 제공하는 인터페이스이다.

         

        즉, Servlet stack 의 Servlet, HttpServletRequest, HttpServletResponse 등의 역할과 유사하다고 볼 수 있다..

         

        Spring Webflux 에서는 front handler 로..

        WebHandler 를 구현한 DispatcherHandler 를 등록해준다.

         

         

        DispatcherHandler

        DispatcherHandler 를 보면 굉장히 익숙하다.

         

        Servlet stack 의 DispatcherServlet 처럼 front handler 역할을 수행하기 때문에 유사한 아키텍처를 가진다.

        (HandlerMapping, HanderAdapter 등을 가진다.)

         

        참고

        HandlerMapping 의 경우 servlet stack 에서와 동일한 이름을 가지는데 서로는 다른 인터페이스이다.

         

         

         

        Spring Webflux 와 Reactor Netty 관계

        spring webflux 는 project reactor 의 reactor netty 를 의존한다.

        이 관계를 가장 쉽게 볼 수 있는 클래스는 Spring 의 ReactorHttpHandlerAdapter 이다.

        ReactorHttpHandlerAdapter 를 생성하기 위해서는

        HttpHandler 를 주입받아야 한다.

         

        참고.

        WebHandler 로 Spring 의 HttpHandler 를 만들 수 있다. HttpHandler 가 WebHandler 보다 저 수준이다.

         

        ReactorHttpHandlerAdapter 는.. 함수형 인터페이스를 구현한다.

        타입 파라미터인 HttpServerRequest, HttpServerResponse 는 Reactor Netty 에서 제공하는 인터페이스이다.

        (바로 여기서 Spring Webflux 는 Project Reactor 의 Reactor Netty 를 의존한다라고 생각해 볼 수 있다.)

         

         

        위는 Project Reactor 의 Reactor Netty 가 제공하는

        HttpServer 클래스의 handle 메서드이다.

         

        HttpServer::handle 은 HttpServer 를 생성할 수 있는 메서드이며,

        파라미터로 ReactorHttpHandlerAdapter 가 구현했던 바로 그 함수형 인터페이스를 받는다.

         

        참고

        HttpServer 는

        Netty 의 ServerBootstrap, EventLoopGroup 등을 사용하여 Netty 서버를 만든다.

         

         

        반응형

        'Spring Reactive Stack > Webflux' 카테고리의 다른 글

        HttpHandler 생성과 동작  (0) 2024.03.15
        WebHandler 와 Spring  (0) 2024.03.10
        다음글
        다음 글이 없습니다.
        이전글
        이전 글이 없습니다.
        댓글
      조회된 결과가 없습니다.
      스킨 업데이트 안내
      현재 이용하고 계신 스킨의 버전보다 더 높은 최신 버전이 감지 되었습니다. 최신버전 스킨 파일을 다운로드 받을 수 있는 페이지로 이동하시겠습니까?
      ("아니오" 를 선택할 시 30일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)
      목차
      표시할 목차가 없습니다.
        • 안녕하세요
        • 감사해요
        • 잘있어요

        티스토리툴바