-
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 댓글