| Spring WebFlux | Handler와 Router

아야하면우유·2026년 6월 24일

Spring WebFlux는 MVC와 동일하게 Front-Controller 방식으로 설계되어 있습니다. 요청을 처리하는 흐름을 알아보겠습니다.


Handler

DispatchHandler

DispatchHandler 동작 구조

  • HandlerMapping
    • 요청 URL을 기반으로 처리할 핸들러를 조회한다.
  • HandlerAdapter
    • 핸들러를 실행할 수 있는 어댑터를 조회한다.
  • HandlerResultHandler
    • HandlerResult를 처리하여 응답을 생성하는 핸들러 체인

Exception

HandlerAdapter 구현체는 요청을 처리하는 중에 발생한 예외를 내부적으로 처리할 수 있습니다. 비동기 값을 반환하는 경우에는 처리가 지연될 수 있습니다.


Return Value

Flux같은 경우, 반환 값이 여러 개로 예상될 때 사용 가능합니다. 원소들은 스트리밍되며, 버퍼링되지 않습니다. 기본적으로 많은 수의 원소를 다루게 된다면 메모리 효율성이 떨어지기 때문입니다.
application/json+stream을 사용하면 개별적으로 기록되고, 플러시됩니다.

JSON으로 요소를 인코딩하는 동안, 오류가 발생하면
잘못된 값으로 기록되고, 커밋되었을 수 있습니다.
경우에 따라, 요소를 버퍼링하여 오류가 없음을 체크하고
한번에 방출하는 방식이 있을 수 있습니다.
Flux<List<Object\>>

API 서버의 경우,

  • Flux<ServerSentEvent>
  • Observable<ServerSentEvent>

Router

Router는 Spring WebFlux에서 제공하는 람다 기반의 새로운 Controller 구현 방식이다.

RouterFunctionHandlerFunction을 호출하는 역할입니다. MVC에서 사용하는 @RequestMapping 역할을 한다고 볼 수 있습니다.

profile
우유가 넘어지면 아야

0개의 댓글