Spring MVC (1) - Dispatcher Servlet

굴착드릴·2025년 5월 21일

Drilling

목록 보기
12/12


서블릿과 스프링의 등장에서 이어집니다.

Spring MVC?

Spring MVC는 Spring 프레임워크의 웹 계층 서브 모듈입니다.

  • Spring framework 안에 Spring MVC가 포함되어 있습니다.

    Spring mvc의 역사를 알고 싶다면 아래를 읽어보시는 것을 추천드립니다.

    Evolution of Java Web MVC Framework

Dispatcher servlet

Spring MVC의 핵심 가치 중 하나는 OCP입니다. Dispatcher servlet은 이 핵심 가치를 위한 중요 클래스입니다.

Dispatcher servlet의 핵심은 공통로직을 처리와 개발자가 POJO로 작성한 비지니스 로직 클래스와의 연결입니다.

  • Servlet을 구현 또는 관련 클래스 상속 필요가 없음 -> POJO로 작성 가능

Front controller 패턴

Front controller 패턴은 모든 요청을 받아 공통 로직을 처리하고 세부 로직은 다른 hanlder들에게 위임하는 패턴입니다.

  • 중앙 집중형 디스패쳐라고도 합니다.

Dispatch servlet은 모든 Http protocol에 대한 front controller의 역할을 수행합니다.

Central dispatcher for HTTP request handlers/controllers, e.g. for web UI controllers or HTTP-based remote service exporters. Dispatches to registered handlers for processing a web request, providing convenient mapping and exception handling facilities.

from Spring docs

Handler 선택

Dispatcher Servlet은 모든 요청을 받아 알맞은 Handler를 선택, 호출합니다.

  • 구체적인 요청 처리는 핸들러에게 위임하는 형태입니다.

여기서 Handler는 controller 또는 method입니다.

ex)@RequestMapping이 붙은 메서드

이 때 호출되는 handler의 성격이 다르기 때문에 Dispatcher 서블릿은 Handler를 직접 호출하는 것이 아닌 HandlerAdaptor를 통해 호출합니다.

Adaptor 패턴?

DispatcherServlet도 서블릿이다

Dispatcher Servlet 요청 흐름

[요청]
   ↓
DispatcherServlet
   ↓         (핸들러 조회)
HandlerMapping → Handler 객체 반환
   ↓         (핸들러 어댑터 조회)
HandlerAdapter → Handler 실행
   ↓
ModelAndView 반환
   ↓
ViewResolver + View 렌더링
   ↓
[응답]

요약

  • Spring MVC는 Spring framework의 핵심적인 서브모듈로써 웹계층을 담당한다.
  • Spring MVC에서 핵심적인 클래스는 DispatcherServlet으로 FrontController 역할을 수행한다.
  • 구체적인 비지니스 로직은 Handler가 처리, DispatcherServlet은 Handler를 찾아 호출하는 역할을 수행한다.
  • Handler들은 각기 다른 spec이므로 알맞은 HandlerAdpator를 통해 호출한다.

--

Reference

Spring docs - 17.Spring MVC framework

profile
두두두두..

0개의 댓글