[Boostcourse] 풀스택/웹 프로그래밍(풀스택)

Spring MVC 2: 구성요소 { 동작 흐름, DispatcherServlet, 컴포넌트들 }

Ben의 프로그램 2023. 7. 27. 20:34
728x90
수업목표
이번 시간에는 Spring MVC 구성요소와 Spring MVC에서 가장 핵심적인 역할을 수행하는 DispatcherServlet 이 어떤 순서로 동작하는지 살펴보도록 하겠습니다. 이를 통해서 Spring MVC에서 사용되는 컴포넌트들에 대해 알아보도록 하겠습니다. 

- DispatcherServlet 이 어떤 순서로 동작하는지 이해한다. 
- DispathcerSerlet 에서 사용되는 컴포넌트(객체)들이 어떤 것들이 있는지 이해한다.

 

Spring MVC 기본 동작 흐름
Spring MVC 기본 동작 흐름도입니다. Spring MVC 는 Model 2 아키텍처 발전형으로 구성되어 있다고 했었습니다. 이 그림을 잘 보시면 색깔별로 구성이 되어있습니다. Database 를 제외한 파란색 부분들은 모두 Spring MVC 가 제공해주는 것들입니다. 개발자가 만들어야 하는 부분들은 보라색으로 되어 있는 부분들입니다. 녹색으로 되어 있는 View 는 Spring 이 제공해주는 부분도 있고 개발자가 만들어야 하는 부분도 있는 것을 의미합니다. Client 가 요청을 보내면 모든 요청은 DispatcherServlet 이라고 하는 서블릿 클래스가 받습니다. 이 DispatcherServlet 은 요청을 처리해줄 컨트롤러와 메서드가 무엇인지 Handler Mapping 에게 물어봅니다. 그런데, 사실은 Handler Mapping 이 혼자서 알아낼 수는 없구요. 우리가 Spring MVC 로 개발을 하게 되면 어떤 요청에 어떤 컨트롤러가 동작할지를 XML 파일 혹은 자바 파일의 어노테이션으로 설정을 하게 됩니다. 개발자가 해준 이런 설정을 Handler Mapping 이 프로젝트가 동작을 할때 관리를 하게 되고 DispatcherServlet 은 이런 Handler Mapping 에게 어떤 Controller 와 메서드를 사용해야 하는지 묻는다는 거죠. DispatcherServlet 은 Handler Mapping 으로부터 지금 들어온 요청에 알맞는 Controller 와 메서드가 무엇인지 정보를 알아낸 다음 Handler Adapter 에게 얻은 정보를 넘겨주면서 실행을 요청합니다. Handler Adapter 는 DispatcherServlet 이 넘겨준 요청과 정보를 토대로 Controller 와 메서드를 실행시킵니다. 실행된 결과는 Model(view name) 에 담겨서 DispatcherServlet 에게 다시 전달이 됩니다. DispatcherServlet 은 Controller 가 리턴한 view name 을 View Resolver 에게 전달하고 View Resolver 가 View 를 생성하여 View 에게 전달하고 View 는 최종적으로 출력하게 됩니다. Spring MVC 는 위 그림의 순서만 이해를 하면 크게 어렵지 않게 사용할 수 있습니다. 

 

Spring MVC 컴포넌트들
Spring MVC 를 이용한다는 것은 DispatcherServlet 이 어떻게 동작하는지를 이해하는 것이라고 할 수 있는데요. DispatcherServlet 이 요청을 받아서 결과를 처리하기 까지 다음과 같은 컴포넌트를 사용하게 됩니다.

-) HandlerMapping
-) HandlerAdapter
-) MultipartResolver
-) LocaleResolver
-) ThemeResolver
-) HandlerExceptionResolver
-) RequestToViewNameTranslator
-) ViewResolver
-) FlashMapManager

DispatcherServlet 과 DispatcherServlet 이 사용하는 위의 컴포넌트들을 지금부터 자세히 알아보도록 하겠습니다.

 

출처 : boostcourse 웹 프로그래밍(풀스택) 
https://www.boostcourse.org/web316/lecture/20655?isDesc=false