Spring/MVC

Spring : Spring MVC란?

Dev.Cho 2021. 9. 4. 01:44

MVC란?

Spring MVC란 가장 많이 사용되고 있는 웹 아키텍처로, 스프링에서 웹 모듈 형태로 제공된다.

 

웹 개발 시 Model, View, Controller 단의 관심사를 분리함으로써 각각 독립적으로 개발될 수 있게 하여 각 구성요소 간의 의존성을 낮춘 것이 특징이며, 사용자 요청이라는 단일 진입점을 가진 웹 환경에서 사용되고 있는 아키텍처이다. 

* 관심사 분리:  관심사 분리는 컴퓨터 프로그램의 디자인 원칙으로, 분리시킬수 있는 부분을 분리시키는 원칙이다.

* 관심사 분리가 중요한 이유는 관심사 분리가 되지 않을 경우 프로그램 내부의 코드간 의존성이 너무 커져서 하나를 고치거나 기능을 추가할 때 의존성이 있는 부분을 모두 고쳐야 하는 상황이 생기기 때문이다.

 

 

MVC 개요

MVC 아키텍처를 채택한 웹 어플리케이션은 <그림1>과 같은 과정을 거쳐 사용자에게 View를 제공한다.

그림1. MVC 예제

 

kotlinworld.com에서 유저의 프로필을 보여주는 서비스를 만들었다고 해보자. 위의 그림1은 다음과 같이 설명될 수 있다.

 

1. 사용자가 devcho라는 유저의 프로필을 조회하고 싶다고 Spring Server에 요청을 한다. 보통 HTTP 방식으로 요청을 하게된다. 이때 요청 쿼리는 아래와 같다.

요청 : http://www.kotlinworld.com/user?name=devcho

2. 주소 뒤에 있는 값이 '/user'이므로 user에 매핑되어 있는 Controller에서 이 요청을 확인한다.

3. Controller는 Model에 사용자의 이름이 devcho라는 것(?name=devcho)을 Model에 전달하여 데이터를 감싸도록 요청한다.

4. Model은 데이터를 감싼다.

5. 감싸진 데이터는 View에 전달된다.

6. View에서는 전달받은 데이터를 이용해 View를 구성한다.

7. 구성된 View가 User에 전달된다.

 

이러한 과정을 통해 사용자에게 devcho의 프로필에 대한 View가 전달된다.

 

MVC의 의의

위에서 우리는 Controller는 요청을 확인하는 역할을 하며 Model은 데이터를 감싸는 역할을 하고 View는 Model에서 감싸진 데이터를 이용해 View를 구성하는 역할을 하는 것을 보았다.

 

이렇게 M(Model) V(View) C(Controller)가 관심사 분리되어 개발되는 것을 바로 MVC아키텍처로 개발된 웹 어플리케이션이라 부른다. 이러한 과정을 통해 각 부분이 서로에게 의존적이지 않게 개발될 수 있게 되어 개발의 확장성과 유연성을 모두 잡을 수 있게 된다.

반응형