개발자는 기록이 답이다

패스트캠퍼스 환급챌린지 29일차 미션 (2월 29일) :  Spring Webflux 완전 정복 : 코루틴부터 리액티브 MSA 프로젝트까지 강의 후기 본문

패스트캠퍼스

패스트캠퍼스 환급챌린지 29일차 미션 (2월 29일) :  Spring Webflux 완전 정복 : 코루틴부터 리액티브 MSA 프로젝트까지 강의 후기

slow-walker 2024. 2. 29. 23:41

DispatcherHandler는 Spring WebFlux에서 중요한 역할을 하는 핸들러 중 하나입니다. 이는 HTTP 요청을 처리하고 적절한 핸들러(Handler)로 라우팅하는 역할을 수행합니다. 주로 DispatcherHandler는 프레임워크 내부에서 사용되며, 직접적으로 사용하기보다는 라우터 및 핸들러 매핑과 함께 사용됩니다.

DispatcherHandler의 주요 역할

 

  • 라우팅 및 핸들러 매핑: DispatcherHandler는 URL 패턴 및 HTTP 메서드와 관련된 핸들러 매핑을 처리합니다. 요청이 들어오면 해당 요청을 처리할 핸들러를 찾아 라우팅합니다.
  • 핸들러 실행: 라우팅된 핸들러를 실행하여 실제로 요청을 처리하고 응답을 생성합니다. 핸들러는 주로 WebHandler나 HandlerFunction과 같은 함수형 인터페이스를 구현한 객체들입니다.
  • 예외 처리: 요청 처리 중 발생한 예외를 처리하고 적절한 에러 응답을 생성합니다. 이는 WebExceptionHandler를 통해 처리됩니다.

DispatcherHandler 사용 예시


일반적으로 개발자가 직접 DispatcherHandler를 사용하는 경우는 드뭅니다. 대신, Spring WebFlux의 구성 클래스에서 사용되어 다른 빈들과 통합됩니다. 아래는 간단한 구성 클래스에서 DispatcherHandler가 어떻게 사용되는지를 보여주는 예시입니다.

 

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.server.reactive.HttpHandler;
import org.springframework.http.server.reactive.ReactorHttpHandlerAdapter;
import org.springframework.web.reactive.function.server.RouterFunctions;
import org.springframework.web.server.adapter.WebHttpHandlerBuilder;
import reactor.netty.http.server.HttpServer;

@Configuration
public class WebFluxConfig {

    @Bean
    public HttpServer httpServer() {
        return HttpServer.create().port(8080);
    }

    @Bean
    public HttpHandler httpHandler() {
        return WebHttpHandlerBuilder
                .webHandler(RouterFunctions.toHttpHandler(dispatcherHandler()))
                .build();
    }

    @Bean
    public DispatcherHandler dispatcherHandler() {
        return new DispatcherHandler();
    }

    @Bean
    public ReactorHttpHandlerAdapter httpHandlerAdapter(HttpHandler httpHandler) {
        return new ReactorHttpHandlerAdapter(httpHandler);
    }
}

 

위의 구성 클래스에서 DispatcherHandler는 RouterFunctions.toHttpHandler를 통해 HttpHandler로 변환되어 설정되고, 이를 통해 HttpServer를 구동합니다. 이렇게 함으로써 DispatcherHandler는 요청을 라우팅하고 핸들러를 실행하는 중심 역할을 수행하게 됩니다.

Spring WebFlux의 기본적인 구성에서는 개발자가 직접 DispatcherHandler를 다룰 일은 적지만, 이를 통해 어떻게 핸들러 매핑 및 라우팅이 이루어지는지 이해하는 것이 중요합니다.

 


 

※ 본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다. https://bit.ly/48sS29N