안녕하세요 오늘은 스프링 MVC 패턴
에 대해 알아보겠습니다 👨💻
웹 계층에 서블릿(Servlet) API를 기반으로 클라이언트의 요청을 처리하는 모듈이 있는데 이를 스프링 웹 MVC(spring-web-mvc) 또는 스프링 MVC라고 합니다.
그렇다면 MVC 패턴
이란 무엇일까요?
MVC 패턴
은 애플리케이션을 개발할 때 사용하는 디자인 패턴입니다.
애플리케이션의 개발 영역을 MVC(Model, View, Controller)로 구분하여 각 역할에 맞게 코드를 작성하는 개발 방식입니다.
MVC 패턴을 도입하면서 UI 영역과 도메인(비즈니스 로직) 영역으로 구분되어 서로에게 영향을 주지 않으면서 개발과 유지보수를 가능하게 되었습니다
@Controller // Controller 클래스 -> 빈 객체로 등록
public class HelloController {
@RequestMapping("/hello.do") // 매핑할 URL
public String hello(Model model) {
model.addAttribute("greeting", "안녕하세요"); // Model에 데이터를 설정
return "hello"; // 리턴할 View 이름
}
}
Model
Spring MVC 기반의 웹 애플리케이션이 클라이언트의 요청을 전달받으면 요청 사항을 처리하기 위한 작업을 합니다.
처리한 작업의 결과 데이터를 클라이언트에게 응답을 돌려주어야 하는데, 이때 클라이언트에게 응답으로 돌려주는 작업의 처리 결과 데이터를 Model
이라 합니다 👨💻
View
View
는 Model을 이용하여 웹 브라우저와 같은 애플리케이션의 화면에 보이는** 리소스(Resource)를 제공하는 역할을 합니다 👨💻
Spring MVC에는 다양한 View 기술이 포함되어 있습니다.
Controller
Controller
는 클라이언트 측의 요청을 직접적으로 전달받는 엔드포인트(Endpoint)로써 Model과 View의 중간에서 상호작용을 해주는 역할을 합니다.
클라이언트 측의 요청을 전달받아 비즈니스 로직을 거친 후, Model
데이터가 만들어지면, 이 Model 데이터를 View
로 전달하는 역할을 합니다.
이제부터 Spring MVC 패턴 구조에 대해 구체적으로 학습해보겠습니다 💪
해당 이미지는 Spring MVC 패턴 구조에 대한 이미지입니다.
사실 일반적인 MVC 패턴에는 다양한 종류가 있지만, 보통 해당 이미지를 기반으로 한 MVC 패턴을 Spring MVC 패턴이라고 합니다 👀
DispatcherServlet
은 클라이언트의 요청을 전달받습니다. Controller
에게 클라이언트의 요청을 전달하고, 컨트롤러가 리턴한 결과값을 View
에 전달하여 알맞은 응답을 생성하도록 합니다 🧑🏼💻
DispatcherServlet
은 Controller
의 Controller
이기 때문에 Front Controller 라고 불리기도 합니다.
DispatcherServlet
은 HttpServlet을 상속받아 사용하고, 서블릿으로 동작합니다.
DispatcherServlet → FrameworkServlet → HttpServletBean → HttpServlet
DispacherServlet을 사용하면 서블릿으로 등록하면서 모든 경로에 (urlPatterns=”/”)에 대해 매핑합니다.
HandlerMapping
은 클라이언트의 요청 URL 을 어떤 컨트롤러가 처리할지 결정하는 기능을 합니다.
Controller
는 클라이언트의 요청을 처리한 뒤, 결과를 리턴합니다.
응답 결과에서 보여줄 데이터를 Model
에 담아 전달합니다.
Controller
에서 나오는 Model
은 HandlerAdpater
에 의해 ModelAndView
로 변환됩니다.
ModelAndView
란 Controller
에서 처리한 결과 정보 및 View
선택에 필요한 정보를 담습니다.
ModelAndView
를 전달받은 DispatcherServlet
은 실제 클리언트에게 보여질 View
를 렌더링하기 위해 어떤 View
객체를 사용할지 결정하기 위해 ViewResolver
를 호출합니다.
ViewResolver
에 의해 View
객체가 결정되고 해당 객체를 통해 View
를 렌더링합니다.
지금까지 전반적인 Spring MVC 에 대해 알아보았습니다.
이번에는 Spring MVC 장점과 단점에 대해 알아보겠습니다.
Model
, View
, Controller
로 나누어서 개발을 할 수 있기에 여러 개발자가 역할을 분담해서 개발을 진행할 수 있습니다.이처럼 Spring MVC 패턴에는 장점과 단점이 존재하지만 현재 MVC 패턴이 적용되어 있는 전자정부 프레임워크
가 많이 있기 때문에 매우 중요한 패턴으로 사용되고 있습니다.
또한, 위에서 서술한 단점은 개발자가 신경써서 개발한다면 충분히 해결가능하므로 많은 개발자가 채택하고 있는 Spring MVC 패턴을 적용해보도록 합시다 💪
MVC패턴이란, Spring MVC란, Spring MVC 장점, Spring MVC
[Spring] Spring의 MVC 패턴과 MVC1과 MVC2 비교