[F-Lab 모각코 챌린지] 51일차 - DispatcherServlet 의 초기화
F-Lab 모각코 챌린지 51일차 - DispatcherServlet 의 초기화 함수 호출 시 어떤 동작들이 이루어지는지 확인하였습니다. 해당 지식을 바탕으로 FrontController 패턴을 사용 해 Spring 을 구현 해 볼 예정 입니다.
![[F-Lab 모각코 챌린지] 51일차 - DispatcherServlet 의 초기화](/content/images/size/w1200/2023/07/f_lab_mogacko-9-1.png)
DispatcherServlet 을 사용하면 최초 initStrategies 메서드를 통해 여러 인터페이스들을 초기화 한다
초기화 하는 각각의 요소들을 알아보자
![](https://blog.pollra.com/content/images/2023/07/_2023_07_17__7.14.51.png)
DispatcherServlet.properties
아래에서 설명하는 것은 스프링의 주요 설정들이다
그러한 설정들은 인터페이스로 갈아낄 수 있도록 설정 되었으며 해당 설정은 DispatcherServlet.properties 에서 확인할 수 있다
![](https://blog.pollra.com/content/images/2023/07/_2023_07_17__11.32.32.png)
![](https://blog.pollra.com/content/images/2023/07/_2023-07-17__11.32.44.png)
MultipartResolver
- 파일 업로드 요청 처리에 필요한 인터페이스
- Spring Legacy 를 사용할 경우 해당 기능을 이용하기 위해서는 Resolver 를 등록 해 주어야 하지만 Spring Boot 의 경우 기본적으로 등록 되어있어, 설정을 건드리지 않아도 작동할 수 있다
- HttpServletRequest 를 MultipartHttpServletRequest 로 변환해주어 요청이 담고있는 File 을 꺼낼 수 있는 API 제공
LocaleResolver
- 넘어온 사용자 장소 데이터를 파악한다
- 기본 전략은 사용자의 요청 헤더에 담긴 accept-language 정보로 판단
ThemeResolver
- 애플리케이션에 설정된 테마를 파악하고 변경할 수 있는 인터페이스
- 참고: https://memorynotfound.com/spring-mvc-theme-switcher-example/
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 컨테이너를 발전시키는 형태로 진행 해 보려고 한다.)
시간이 어느정도 들어 갈 것이기 때문에 구현이 완료될 때 까지는 다른 포스팅을 할 예정이다.