HttpHandler 생성과 동작

Spring Reactive Stack/Webflux 2024. 3. 15. 00:16

이전 포스팅에서 Netty 서버를 구동하기 위해 .. Spring 은 project reactor 의 Netty, Reactor Netty 를 의존하고 Reactor Netty 의 HttpServer 를 생성하기 위해 HttpServer 에는 HttpServer::handler 메서드가 있는데 Spring 에서는 HttpServer::handler 의 파라미터(함수형 인터페이스)에 사용할 구현체를 ReactorHttpHandlerAdapter 로 만들어 놨다. 그리고.. Spring 의 ReactorHttpHandlerAdapter 를 생성하기 위해서는 HttpHandler 를 주입받아야 하는 것을 확인했다. 이번 포스팅에서는 HttpHandler 의 생성과 동작에 대해 다뤄보겠다. HttpHandler..

Article Thumbnail
WebHandler 와 Spring

Spring Reactive Stack/Webflux 2024. 3. 10. 16:59

Spring 이 WebHandler 의 구현체인 DispatcherHandler(front handler) 를 등록하는 과정을 알아보자. spring boot autoconfigure 에서 자동 구성(Auto Configuration) 기능에 의해 동작하는 HttpHandlerAutoConfiguration 이다. 자동 구성 조건에 따라 HttpHandler 를 빈으로 등록하고 있는 것을 알 수 있다. HttpHandlerAutoConfiguration 에서 HttpHandler 를 생성할 때 호출하는 WebHttpHandlerBuilder::applicationContext 메서드 코드의 일부이다. Spring container 에서 WEB_HANDLER_BEAN_NAME("webHandler") 의 ..

Article Thumbnail
WebHandler 와 Netty 의 관계

Spring Reactive Stack/Webflux 2024. 3. 9. 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 로.. WebHan..

Article Thumbnail
Netty 2

Spring Reactive Stack/Netty 2024. 1. 21. 19:43

Netty Channel 의 pipline 으로 수행되는 ChannelHandler 가 제공하는 메서드를 하나씩 정리해보겠다. ChannelInboundHandler inbound I/O 이벤트를 처리하기 위한 ChannelHandler 이다. inbound I/O 이벤트가 발생되면 각 이벤트에 맞는 아래 메서드를 호출 해준다. void channelRegistered(ChannelHandlerContext ctx) throws Exception; Netty Channel 이 EventLoop 에 등록되는 경우 호출된다. - Netty ServerSocketChannel 의 경우 서버를 시작하며 EventLoop 에 최초 1회 등록할 것이므로 그 때 1회 호출 될 것이다. - Netty SocketCha..

Netty 1

Spring Reactive Stack/Netty 2024. 1. 17. 01:11

Spring reactive stack 에서 사용되는.. Spring webflux 는 reactor 와 netty 를 의존한다. 뿐만 아니라, Spring data redis 도 netty 를 의존한다. 이번 포스팅에서는 netty 를 알아보겠다. Netty 소개 Netty 공식 홈페이지에 따르면 "Netty is asynchronous event-driven network application framework" 라 소개한다. (Server & Client) Netty 는.. HTTP, SMTP, FTP 등의 protocol 뿐만 아니라 다양한 protocol 을 지원한다. 또한, 불필요한 memory copy 를 최소화 하며 Java IO, NIO, selector 기반으로 적은 리소스로 높은 성능..

Article Thumbnail
Spring Data, Object Mapping

Spring Reactive Stack/DB, Cache 연동 2024. 1. 7. 18:13

R2dbc (Reactive Relational Database Connectivity), MongoDB 등에서 사용하는 Spring Data 의 기본적인 객체 매핑의 방법을 알아보겠다. 다양한 data store 에서 공통적으로 사용하는 방법이지만, 구현체 별로 다를 수 있다. 참고로.. 1. JPA(Jdbc) 는 Reactive Stack 에서 사용이 불가능 하여 R2dbc 가 나온 것이므로 헷갈리지 말 것. 2. JPA 는 앞으로 소개할 Spring Data 의 기본 Object mapping 과 좀 다르게 사용할 것을 권장 하므로 엮어서 생각하지 말 것. Object Mapping 은 크게 두 단계로 이루어진다. 1. Instance creation (Object creation) 2. Insta..