Spring - (7) : MVC 패턴

­이승환·2021년 12월 9일
0

spring

목록 보기
6/26

MVC 패턴

MVC 패턴은 Model, View, Controller로 구성되어 역할들을 분리하여 개발이 용이하도록 하는 디자인 패턴이라고 설명하였었다.

스프링(Spring) 또한 웹 애플리케이션을 개발할 때 기본적으로 MVC 패턴을 바탕으로 개발한다. 어떻게 보면 Model, View, Controller로 비슷하게 볼 수 있지만 약간 다르다.

구조

MVC 패턴에서 사용자는 Controller, View와 소통하였다면 스프링 MVC 패턴에서 사용자는 DispatcherServlet라는 친구와만 소통한다. 이전 포스팅에서 설명했었던 Servlet Container에서 활용되는 HttpServlet과 동일한 역할을 하고 있지만, 싱글톤으로써 활용된다는 점, Bean Container 를 생성해서 IoC / DI를 자동으로 진행해준 다는 점이 더 고도화 된? 서블릿이라고 생각하면 된다.

이를 프론트 컨트롤러 패턴이라고 한다.

동작 순서

  1. 사용자가 서비스를 요청하면 DispatcherServlet에게 전달된다.
  2. DispatcherServlet은 HandlerMapping을 통해서 요청에 해당하는 Controller를 알아낸다.
  3. 알아낸 Controller를 HandlerAdapter에게 전달하면 HandlerAdapter에서 Controller를 알맞은 타입으로 변환해서 Controller에게 전달한다. (Adapter Pattern)
  4. Controller는 Model에게 Data를 요청하고 Model은 연동된 Database를 통해 알맞은 Data를 Controller에 응답한다.
  5. Controller는 전달받은 Data를 알맞은 타입으로 변환하여 HandlerAdapter에게 전달하고 HandlerAdapter는 이를 DispatcherServlet에게 전달된다.
  6. DispatcherServlet은 처리 결과를 ViewResolver에게 전달하여 알맞은 View를 알아내고 DispatcherServlet에게 전달한다.
  7. DispatcherServlet은 알맞은 View에게 Data를 전달하고 View는 처리한 View를 DispatcherServlet에게 전달한다.
  8. DispatcherServlet은 사용자의 요청을 처리한 View를 사용자에게 전달한다.

용어

DispatcherServlet

  • 사용자의 요청을 받아들이는 친구로서 FrontController
  • 스프링 프레임워크의 중심이 되는 서블릿으로 모든 사용자의 요청을 받아 사용자에게 응답하기까지의 모든 과정을 제어
  • 사용자 요청의 모든 생명주기를 관리

HandlerMapping

  • 사용자가 요청한 서비스에 알맞은 Controller를 찾아서 매핑해주는 친구이다.
  • @Controller 어노테이션이 적용된 객체의 @RequestMapping 값을 이용해 요청을 처리할 Controller를 매핑한다.

HandlerAdapter

  • DispatcherServlet의 처리 요청을 변환에서 Controller에게 전달
  • Controller의 응답 결과인 Data를 DispatcherServlet이 요구하는 타입으로 변환

ViewResolver

  • 사용자의 서비스 요청을 보여줄 View를 검색하여 찾아줌
profile
Mechanical & Computer Science

0개의 댓글