[기술면접대비] MVC 패턴이란?

김우경·2020년 12월 4일
1

MVC란?

  • 하나의 프로젝트를 구성할 때 구성요소를 Model, View, Controller의 세가지의 역할로 구분

구성요소

: Model + View + Controller

Model

  • 어떠한 동작을 수행하는 코드
    -> Application이 어떤 동작을 할 것인지 ?
    -> 보통 DB 테이블에 대응됨

View

  • 모델에게 질의해 모델로부터 값을 가져와 사용자에게 보여주기
    -> 입출력 과정 및 결과

Controller

  • 사용자 요청에 맞는 데이터를 Model에 요청, 데이터를 View에 반영
    -> 모델이 어떻게 처리할 지 정의?

장점과 단점

장점

  • 유연하고, 확장하기가 쉽다.
  • 모델-뷰-컨트롤러를 구분해서 개발함으로 동시 다발적인 개발이 가능하다.

단점

  • Model과 View 사이의 의존성이 높다.
  • 설계 단계에서 클래스가 많아져 구조가 복잡해질 수 있다.

MVC1과 MVC2

MVC1


: View와 Controller를 전부 JSP가 담당

MVC2


: MVC1과 다르게 Controller와 View가 분리!
-> 요청의 결과를 보여주는 뷰만 JSP가 담당하고, 컨트롤러의 역할은 서블릿이 담당

스프링에서의 MVC


스프링은 DispatcherServlet이 Front Controller의 역할을 한다. 이때 Front Controller란, 우선적으로 유저의 모든 요청을 받고, 그 요청을 분석하여 세부 컨트롤러에게 나누어주는 역할!
모델은 DAO, DTO, Service로 나뉨

전체적인 흐름은

  1. REST API에 의해 URL 호출을 받는다.
  2. Controller가 요청사항을 파악한다.
  3. 상속받고 있는 서비스가 비즈니스 로직을 수행하러 간다.
  4. 서비스는 이 로직을 처리하기 위해 DAO에 메소드를 호출하고, DAO는 DB에 접근해서 데이터를 조작한 뒤 결과를 다시 서비스에게 전달한다.
  5. 서비스는 View에 이 결과를 리턴한다.

와 같다.

스프링 부트에서 MVC 패턴 적용

스프링 부트에서는

  • 도메인 : db에 주로 저장되고 관리되는 비즈니스 도메인 객체→ Model
  • html로 구현한 화면 : 사용자에게 보여지는 화면 → View
  • @Controller : 사용자에게 온 요청을 받고, response하는 역할 → Controller
  • @Service : Controller를 통해 온 요청을 받고, 비즈니스 도메인 객체를 이용해서 핵심 비즈니스 로직을 구현하는 부분 → Model
  • 리포지토리 : db에 접근해서 도메인 객체를 db에 저장하고 관리
    와 같이 역할을 나누어 개발했었다.
profile
Hongik CE

0개의 댓글