[F-Lab 모각코 챌린지] 51일차 - DispatcherServlet 의 초기화

F-Lab 모각코 챌린지 51일차 - DispatcherServlet 의 초기화 함수 호출 시 어떤 동작들이 이루어지는지 확인하였습니다. 해당 지식을 바탕으로 FrontController 패턴을 사용 해 Spring 을 구현 해 볼 예정 입니다.

[F-Lab 모각코 챌린지] 51일차 - DispatcherServlet 의 초기화

DispatcherServlet 을 사용하면 최초 initStrategies 메서드를 통해 여러 인터페이스들을 초기화 한다

초기화 하는 각각의 요소들을 알아보자

DispatcherServlet.properties

아래에서 설명하는 것은 스프링의 주요 설정들이다

그러한 설정들은 인터페이스로 갈아낄 수 있도록 설정 되었으며 해당 설정은 DispatcherServlet.properties 에서 확인할 수 있다

MultipartResolver

  • 파일 업로드 요청 처리에 필요한 인터페이스
  • Spring Legacy 를 사용할 경우 해당 기능을 이용하기 위해서는 Resolver 를 등록 해 주어야 하지만 Spring Boot 의 경우 기본적으로 등록 되어있어, 설정을 건드리지 않아도 작동할 수 있다
  • HttpServletRequest 를 MultipartHttpServletRequest 로 변환해주어 요청이 담고있는 File 을 꺼낼 수 있는 API 제공

LocaleResolver

  • 넘어온 사용자 장소 데이터를 파악한다
  • 기본 전략은 사용자의 요청 헤더에 담긴 accept-language 정보로 판단

ThemeResolver

HandlerMapping

  • 요청을 처리할 핸들러는 찾는 인터페이스 여기서 말하는 핸들러는 우리가 GetMapping, PostMapping 등 RequestMapping 애노테이션을 통해 지정한 메서드 혹은 클래스를 의미한다
  • RequestMappingHandlerMapping : 애노테이션 기반 핸들러 매핑
  • BeanNameUrlHandlerMapping : 빈 이름을 기반으로 핸들러를 매핑해 주는 것

HandlerAdapter

  • HandlerMapping 에서 찾은 Handler 를 처리할 수 있는 인터페이스
  • 스프링 MVC 확장의 핵심

HandlerExceptionResolver

  • 요청 처리중에 발생한 에러를 처리하는 인터페이스

RequestToViewNameTranslator

  • 핸들러에서 뷰 이름을 명시적으로 리턴하지 않은 경우, 요청을 기반으로 뷰 이름을 판단하는 인터페이스

ViewResolver

  • 뷰 이름에 해당하는 뷰를 찾아내는 인터페이스

FlashMapManager

  • PRG(Post/Redirect/Get) 를 해결하기 위한 패턴
  • 리다이렉션을 사용할 때 URL 에 param으로 값을 주지 않으면서 데이터를 전달하고 정리할 때 사용한다
  • 기본적인 전략은 Session 기반으로 되어있다

어제와 오늘 포함하여 이러한 스프링의 실제 구현에 대해 알아보았다

이제 공부 한 내용을 통해 DispatcherServlet 을 구현하고 실제 Spring MVC 를 구현 해 볼 것이다(이전 포스팅에서 다루었던 IoC 컨테이너를 발전시키는 형태로 진행 해 보려고 한다.)

시간이 어느정도 들어 갈 것이기 때문에 구현이 완료될 때 까지는 다른 포스팅을 할 예정이다.