공부하다죽어라
article thumbnail
Published 2021. 4. 26. 21:50
[Spring] 스프링 MVC 흐름 개발/Spring

스프링의 대표적인 디자인패턴으로 MVC패턴을 꼽을 수 있다.

 

MVC 패턴이란

웹 애플리케이션에서 일반적인 MVC 구성요소 다이어그램

Model-View-Controller의 약어로서 소프트웨어 공학에서 사용되는 소프트웨어 디자인패턴이다.

 

 

 사용하면 무엇이 좋은가 ?

 MVC패턴은 사용자 인터페이스로부터 비즈니스로직을 분리시켜 애플리케이션의 시각적인 요소(View)와 그 뒷면에서 사용되는 비즈니스 로직을 서로 영향을 끼치지 않으면서 개발에 임할수 있다.

 

 

MVC 패턴의 구성요소

Model

 - 모델(model)이란 어떠한 동작을 수행하는 코드를 말한다. 표시 형식에 의존하지 않는다. 다시 말해, 사용자에게 어떻게 보일지에 대해 신경쓰지 않아도 된다. 모델은 순수하게 public 함수로만 이루어진다. 몇몇 함수들은 사용자의 질의(query)에 대해 상태 정보를 제공하고 나머지 함수들은 상태를 수정한다.

 

View

 - MVC에서 모델은 여러 개의 뷰(view)를 가질 수 있다. 뷰는 모델에게 질의를 하여 모델로 부터 값을 가져와 사용자에게 보여준다.

 

Controller

 - MVC의 뷰는 여러 개의 컨트롤러(controller)를 가지고 있다. 사용자는 컨트롤러를 사용하여 모델의 상태를 바꾼다. 컨트롤러는 모델의 mutator 함수를 호출하여 상태를 바꾼다. 이때 모델의 상태가 바뀌면 모델은 등록된 뷰에 자신의 상태가 바뀌었다는 것을 알리고 뷰는 거기에 맞게 사용자에게 모델의 상태를 보여 준다.

 

위 내용을 압축하면 다음과 같은 패턴임을 알 수 있다. (MVC2)

 

 

스프링 프레임워크 또한 위와 같은 디자인패턴으로 구성되어있다.

이제 스프링의 MVC패턴에 대해 자세히 알아보자.

 

 

스프링 MVC 흐름

스프링은 위 그림과 같이 MVC흐름이 구성되어있는 것을 알 수 있다.

각 실행순서를 자세하게 알아보자.

 

1. Client가 request를 보내면 DispatcherServlet은 Client요청에 알맞는 Controller를 호출한다.

2. 호출된 Controller는 사용자 요청에 알맞는 Business Logic을 수행 한 뒤 결과 값이 DispatcherServlet에 리턴된다.

3. ModelAndView는 실제 JSP 정보를 갖고있지 않으며, ViewResolver가 논리적 이름을 실제 JSP이름으로 변환한다.

4. View는 결과정보를 갖고 클라이언트가 보는 화면에 출력한다.

 

이렇게 스프링 MVC흐름을 알아보았다.

 

이론상으로는 JSP를 호출하고 결과를 표현하고... 했지만 실제로 내가 했던 프로젝트 후반부에서는 프론트단과 백단을 완전히 나눠서 진행해서 스프링에서 JSP를 생성하는 일은 없었다. 

 

프레임워크를 사용하면서 가장 중요한 것은 단순히 외우는 것이 아니라 그 프레임워크의 아키텍쳐를 제대로 파악하고 활용할줄 알아야 한다고 배웠다. MVC패턴이랑 무엇이고 이러한 디자인패턴이 Spring에서 어떻게 적용되는지 알아보았다.

profile

공부하다죽어라

@슥혁

감사합니다 👍🏻