- WebHandler 와 Netty 의 관계2024년 03월 09일
- starryeye
- 작성자
- 2024.03.09.오전00: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 다음글이전글이전 글이 없습니다.댓글