스프링 #4 스프링 MVC

함형주·2022년 10월 8일
0

spring

목록 보기
4/12

질문, 피드백 등 모든 댓글 환영합니다.

MVC란?

MVC는 Model, View, Controller의 약자로 널리 사용되는 디자인패턴입니다.

Model : 데이터 관리와 이동을 담당
View : html 생성 등 화면을 처리하는 기능을 담당
Controller : 요청을 처리하고 핵심 비지니스 로직을 실행, 데이터를 model에 담아 view로 전송시키는 역할을 담당

MVC 패턴은 기존의 웹애플리케이션이 비지니스 로직과 화면을 렌더링하는 작업을 서블릿이나 JSP 등으로 처리하였는데 이들이 너무 많은 역할을 담당하게 되어 결과적으로 유지보수의 어려움을 겪었습니다. 또한 코드 수정 시 화면을 렌더링하는 로직과 핵심 비지니스 로직은 변경의 사이클이 다른 경우가 대부분이라 두 기능을 다른 코드로 관리해야할 필요가 있었습니다.
이런 문제들을 해결하기 위해 역할의 분리가 필요했고 이를 Model, View, Controller로 분리하여 문제를 해결하였습니다.

기존의 요청 흐름


MVC 패턴의 요청 흐름


스프링에서의 MVC 패턴 요청 흐름

스프링 MVC

스프링MVC 구조

스프링 MVC에서는 DispatcherServlet이 핵심이라고 할 수 있습니다. 디스패처 서블릿은 HTTP 요청을 처음으로 처리하며 각 요청에 맞는 컨트롤러를 호출합니다. HandlerMaaping에서 스프링빈에 등록된 컨트롤러를 조회하고 HandlerAdapter를 통해 적절한 컨트롤러를 실행시킵니다.
이렇게 Http 요청을 분석하여 적절하게 기능을 분배하는 컨트롤러를 프론트 컨트롤러라고 합니다.
또한 각 컨트롤러가 처리한 데이터와 반환한 view 정보를 기반으로 ViewResolver를 통해 완성된 view를 제공합니다.

정리하자면,

  • DispatcherServlet : HTTP 요청을 처음으로 처리하며 각 요청에 맞는 컨트롤러를 호출하고 공통 기능을 처리. 프론트 컨트롤러라고도 함.

  • HandlerMaaping : 스프링빈에 등록된 핸들러(컨트롤러)를 조회

  • HandlerAdapter : 핸들러 어댑터를 통해 여러 방식으로 구현된 컨트롤러를 요청에 따라 적절히 호출할 수 있음.

  • ViewResolver : 컨트롤러가 반환한 view의 이름을 실제 물리 경로로 반환

스프링은 이러한 구조의 프레임워크를 제공하기에 사용자는 유연하고 편리하게 컨트롤러를 생성하여 사용할 수 있게 됩니다.

사진은 김영한님의 스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술 강의자료에서 발췌하였습니다.

profile
평범한 대학생의 공부 일기?

0개의 댓글