[Spring] 스프링 MVC 패턴에 대해 알아봅시다.

최동근·2022년 12월 16일
0

스프링부트

목록 보기
11/13
post-thumbnail
post-custom-banner

안녕하세요 오늘은 스프링 MVC 패턴에 대해 알아보겠습니다 👨‍💻

🍩 Spring 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 기술이 포함되어 있습니다.

    1. HTML 페이지 출력
    2. PDF, Excel 등의 문서 형태로 출력
    3. XML, JSON 등 특정 형식의 포맷으로 변환
  • Controller
    Controller 클라이언트 측의 요청을 직접적으로 전달받는 엔드포인트(Endpoint)로써 Model과 View의 중간에서 상호작용을 해주는 역할을 합니다.

    클라이언트 측의 요청을 전달받아 비즈니스 로직을 거친 후, Model 데이터가 만들어지면, 이 Model 데이터를 View로 전달하는 역할을 합니다.

이제부터 Spring MVC 패턴 구조에 대해 구체적으로 학습해보겠습니다 💪

🍩 Spring MVC 패턴 구조

해당 이미지는 Spring MVC 패턴 구조에 대한 이미지입니다.
사실 일반적인 MVC 패턴에는 다양한 종류가 있지만, 보통 해당 이미지를 기반으로 한 MVC 패턴을 Spring MVC 패턴이라고 합니다 👀

  • DispatcherServlet

DispatcherServlet 은 클라이언트의 요청을 전달받습니다. Controller 에게 클라이언트의 요청을 전달하고, 컨트롤러가 리턴한 결과값을 View 에 전달하여 알맞은 응답을 생성하도록 합니다 🧑🏼‍💻
DispatcherServletControllerController 이기 때문에 Front Controller 라고 불리기도 합니다.
DispatcherServlet은 HttpServlet을 상속받아 사용하고, 서블릿으로 동작합니다.

DispatcherServlet → FrameworkServlet → HttpServletBean → HttpServlet
DispacherServlet을 사용하면 서블릿으로 등록하면서 모든 경로에 (urlPatterns=”/”)에 대해 매핑합니다.

  • HandlerMapping

HandlerMapping 은 클라이언트의 요청 URL 을 어떤 컨트롤러가 처리할지 결정하는 기능을 합니다.

  • Controller

Controller 는 클라이언트의 요청을 처리한 뒤, 결과를 리턴합니다.
응답 결과에서 보여줄 데이터를 Model 에 담아 전달합니다.
Controller 에서 나오는 ModelHandlerAdpater 에 의해 ModelAndView 로 변환됩니다.

  • ModelAndView

ModelAndViewController 에서 처리한 결과 정보 및 View 선택에 필요한 정보를 담습니다.

  • ViewResolver

ModelAndView 를 전달받은 DispatcherServlet 은 실제 클리언트에게 보여질 View 를 렌더링하기 위해 어떤 View 객체를 사용할지 결정하기 위해 ViewResolver 를 호출합니다.

  • View

ViewResolver 에 의해 View 객체가 결정되고 해당 객체를 통해 View 를 렌더링합니다.

🍩 Spring MVC 패턴에 장점 & 단점

지금까지 전반적인 Spring MVC 에 대해 알아보았습니다.
이번에는 Spring MVC 장점과 단점에 대해 알아보겠습니다.

  • 장점
  1. Model , View , Controller 로 나누어서 개발을 할 수 있기에 여러 개발자가 역할을 분담해서 개발을 진행할 수 있습니다.
  2. 중복된 코드를 줄일 수 있고, 확장성 있고 유연한 코딩이 가능합니다.
  3. 각 컴포넌트별로 나누어져서 있기 때문에 디버깅과 테스팅이 용이 합니다.
  • 단점
  1. 프로젝트의 규모가 커지면 복잡해질 수 있습니다.
    즉 너무 많은 파일이 생성될 수 있습니다.
  2. 하나의 파일에서 모든 로직을 처리하는 대신 여러 파일로 나누어서 개발을 하기 때문에 유지보수 시간이 길어질 수 있습니다.

이처럼 Spring MVC 패턴에는 장점과 단점이 존재하지만 현재 MVC 패턴이 적용되어 있는 전자정부 프레임워크 가 많이 있기 때문에 매우 중요한 패턴으로 사용되고 있습니다.
또한, 위에서 서술한 단점은 개발자가 신경써서 개발한다면 충분히 해결가능하므로 많은 개발자가 채택하고 있는 Spring MVC 패턴을 적용해보도록 합시다 💪


참고

MVC패턴이란, Spring MVC란, Spring MVC 장점, Spring MVC
[Spring] Spring의 MVC 패턴과 MVC1과 MVC2 비교

profile
비즈니스가치를추구하는개발자
post-custom-banner

0개의 댓글