2월 05, 2024

[Spring MVC 패턴] MVC 정의, 구성요소, 다이어그램, 장단점 총정리

 오늘은 Spring MVC 구조에 대하여 살펴보도록 하겠다. 


1) MVC 패턴이란? 


Spring MVC 패턴은 애플리케이션을 개발할 때 사용하는 디자인 패턴으로, 각 영역을 Model, View, Controller로 나누어 코드를 작성하는 개발 방식이다. 


- Model: 웹 애플리케이션이  Client의 요청을 받아 요청사항을 처리하기 위한 작업을 한다. 응답을 돌려줄 때 작업의 처리 결과 데이터를 model이라고 부른다. 

- View: web 상에서 보이는 리소스를 제공하는 역할을 한다. 우리가 흔히 아는 HTML 페이지나 JSP 등이 View에 해당된다. 

- Controller: Controller는 Model과 View 사이의 상호작용을 해주는 역할을 수행한다. 



2) Spring MVC 구조 다이어그램



MVC 디자인 패턴이 Model, View, Controller로 구성되어 있는 디자인 패턴이라는 것은 많은 사람들이 알지만 실제로 안에서 구체적으로 어떻게 동작하는지는 모르는 사람들이 있다.


위 다이어그램을 보고 각 구성요소를 하나씩 공부해보자.


- DispatcherServlet

DispatcherServlet은 Client의 요청(Request)을 받는다. https://www.programmingstory.com/2024/01/front-controller-pattern.html

위 이전 글에서 다루었듯이 Controller의 Controller로 Front Controller라고 불리기도 한다. 


- HandlerMapping

HandlerMapping은 요청으로 들어온 클라이언트의 요청 URL을 어떤 Controller에서 처리할지를 결정한다. 


- HandlerAdapter

해당 Controller를 처리할 수 있는 Adapter를 찾아서 Controller의 작업을 수행해준다. Controller에서 비즈니스 로직을 수행하면 나오는 Model은 HandlerAdapter를 통해 ModelAndView로 return된다.


- ModelAndView

Controller에서 처리한 결과 정보와 View에 필요한 정보를 담는다.


- ViewResolver 

ModelAndView로 전달을 받으면 실제 Client에게 보여질 View를 렌더링하기 위해 어떤 View를 사용할지 결정한다.


- View

ViewResolver에 의해 View가 결정되면 해당 객체에 해당되는 View가 렌더링된다. 


3) MVC 디자인 패턴의 장단점

MVC 디자인 패턴은 모델, 뷰, 컨트롤러를 나누어 개발할 수 있기에 개발이 파트별로 나뉘어 진행될 수 있다는 장점을 가진다. 테스트 및 디버그가 쉽다는 장점이 있으며, 각 구성요소별로 나누어져 있어 중복된 코드를 제거할 수 있다는 장점이 있다. 


다만 구성요소별로 나누어져 있기 때문에 많은 파일이 생성될 수 있고 유지보수가 어렵다는 단점이 있다.