🎯 DispatcherServlet

정의

DispatcherServletSpring MVC에서 들어오는 HTTP 요청을 가장 먼저 받아 적절한 컨트롤러에 위임하는 Front Controller이다. 요청 처리의 시작점이자 Spring MVC의 핵심 진입점이다.

🧩 역할

  • HTTP 요청을 먼저 받는다
  • 적절한 컨트롤러를 찾아 위임한다
  • 응답 생성 흐름을 관리한다
  • 예외 처리와 뷰 해석을 조율한다

🛠 처리 흐름

  1. 요청을 받는다.
  2. HandlerMapping으로 처리할 핸들러를 찾는다.
  3. HandlerAdapter가 해당 핸들러를 실행한다.
  4. HandlerExceptionResolver가 예외를 처리한다.
  5. ViewResolver가 화면 이름을 실제 뷰로 변환한다.
  6. 응답을 클라이언트에 돌려준다.

🧩 주요 구성 요소

private List<HandlerMapping> handlerMappings;
private List<HandlerAdapter> handlerAdapters;
private List<ViewResolver> viewResolvers;
private List<HandlerExceptionResolver> handlerExceptionResolvers;
private MultipartResolver multipartResolver;
private LocaleResolver localeResolver;
private ThemeResolver themeResolver;

HandlerMapping

  • 어떤 컨트롤러가 요청을 처리할지 찾는다

HandlerAdapter

  • 컨트롤러 호출 방식을 맞춰서 실제 실행을 돕는다
  • 컨트롤러 구현 방식이 달라도 DispatcherServlet이 직접 몰라도 되게 해준다

ViewResolver

  • 뷰 이름을 실제 View 객체로 변환한다
  • 화면 응답이 필요한 경우 사용된다

HandlerExceptionResolver

  • 컨트롤러 밖으로 던져진 예외를 처리한다
  • 예외 상황에 맞는 응답이나 ModelAndView를 설정한다

MultipartResolver

  • 파일 업로드 같은 multipart 요청을 처리한다
  • 요청 본문에서 multipart 데이터를 읽고 해석한다

사용 예시

@Bean  
public MultipartResolver multipartResolver(  
        @Value("#{Properties['common.file.maxUploadSizePerFile']}") Long maxUploadSizePerFile) {  
    CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver();  
    multipartResolver.setMaxUploadSize(-1); // no limit  
    multipartResolver.setMaxUploadSizePerFile(maxUploadSizePerFile);  
    return multipartResolver;  
}

LocaleResolver

  • 국제화에서 사용할 언어 정보를 결정한다

사용 예시

@Bean  
public LocaleResolver localeResolver() {  
	return new AcceptHeaderLocaleResolver();  
}  

ThemeResolver

  • 페이지 테마를 결정한다

🧩 특징

  • 모든 요청의 진입점이다
  • 핵심 처리를 여러 전략 객체에 위임한다
  • Spring MVC의 중심 구조를 이룬다
  • 요청, 예외, 뷰, 언어, 파일 업로드를 조율한다

⚠️ 주의사항

  • DispatcherServlet이 모든 것을 직접 처리하는 것은 아니다.
  • 실제 처리 로직은 HandlerMapping, HandlerAdapter 등이 나눠 맡는다.
  • 뷰 응답이 필요한 경우에만 ViewResolver가 의미가 있다.
  • multipart나 국제화 같은 기능은 별도 설정이 필요할 수 있다.

📌 정리

  • DispatcherServlet은 Spring MVC의 Front Controller다.
  • 요청을 받아 적절한 처리자에게 위임하고 응답 흐름을 조율한다.
  • Spring MVC 구조를 이해할 때 가장 먼저 봐야 하는 핵심 컴포넌트다.

연결문서

댓글남기기