Java/Spring

[Spring] MVC Pattern

SeungbeomKim 2022. 11. 23. 03:43
반응형

MVC Pattern이 무엇이고 왜 생겨났을까?? 

 

MVC 패턴은 간략하게 설명하면, 유지보수가 편해지는 코드 구성 방식이다. 

사용하는 이유는 도메인이나, 각종 구성요소들의 재사용을 할 수 있음(중복 코딩 방지)과 더불어 확장성이 매우 증가하였다. 더불어 Model, View, Controller로 요소를 나누었고, 이를 구분하기에 각 요소들이 스스로의 기능에 집중할 수 있고 분업화할 수 있다.. 

어떠한 어플리케이션이 있을 때, MVC 패턴을 사용하지 않고 구현하였다면 전반적인 코드를 싹 다 고쳐야 한다. 하지만, MVC 패턴으로 구현하였으면 잘못된 컴포넌트의 기능만 찾아 이를 리팩토링하면 손쉽게 해결할 수 있다. 이를 통해 유지 보수가 편해질 수 있게 된다.

mvc 패턴(출처 : https://getintotechverse.com/mvc-architecture/)

MVC 패턴 동작 과정

1. 클라이언트가 필요한 기능을 컨트롤러에게 요청한다.

2. 컨트롤러는 해당하는 모델에게 비즈니스 로직을 맡긴다.

3. 비즈니스 로직을 수행한 모델은 컨트롤러에게 알리고, 컨트롤러에서 뷰로 데이터를 보내준다.

4. 뷰에서는 결과 화면을 클라이언트에게 응답해준다. 

 

Model

데이터와 행동을 갖는 객체이다.

비즈니스 로직을 수행한다. (상태 변화 처리, 상태 정보 반환) -> MVC 패턴에 의해 UI로직(View에서 처리)과 구분할 수 있게 된다.

 

View

데이터 및 객체의 입, 출력 담당

또한 데이터를 시각화하여 UI(레이아웃)을 통해 눈으로 볼 수 있게 된다.

 

Controller

사용자의 요청을 해석하고 처리하여 결과를 반환한다.

모델과 뷰를 연결시켜주는 역할을 한다. 이 뿐만 아니라, 뷰와 모델의 역할을 분리시켜준다.

데이터의 흐름 제어를 담당한다(유일하게 다른 컴포넌트(View, Model)의 존재를 알고 있기 때문이다.)

 

MVC Pattern을 지키기 위한 5가지 규칙

  1. Model은 Controller와 View에 의존하지 않아야 한다.(Model 내부에 Controller와 View에 관한 코드가 있으면 안 된다.)
  2. View는 Model에만 의존해야 하고, Controller에 의존하면 안 된다.(View 내부에 Model에 대한 코드만 있을 수 있고, Controller에 대한 코드가 있으면 안 된다.)
  3. View가 Model로부터 데이터를 받을 때는, 사용자마다 다르게 보여주어야 하는 데이터(배달의 민족 앱에서 자신의 주소, 배달원의 요청 메세지 등..)에 대해서만 받아야 한다.
  4. Controller는 Model과 View에 의존해도 된다.
  5. View는 Model로부터 데이터를 받을 때, 반드시 Controller에서 받아야 한다.(왜냐하면 모델은 Controller에서 모델에게 비즈니스 로직을 맡기고 다시 컨트롤러에서 뷰를 호출하여 이를 반환하기 때문이다)
반응형