Spring

[Spring] MVC패턴

강승규 2024. 10. 1. 18:04

MVC패턴이란?

MDN Web Docs에 정리 된 내용으로는, MVC(모델-뷰-컨트롤러)는 사용자 인터페이스, 데이터 및 논리 제어를 구현하는데 널리 사용되는 소프트웨어 디자인 패턴입니다. 소프트웨어의 비즈니스 로직과 화면을 구분하는데 중점을 두고 있습니다. 이러한 "관심사 분리" 는 더 나은 업무의 분리와 향상된 관리를 제공합니다. MVC에 기반을 둔 몇 가지 다른 디자인 패턴으로 MVVM(모델-뷰-뷰모델), MVP(모델-뷰-프리젠터), MVW(모델-뷰-왓에버)가 있습니다.

 

그러면 Model, View, Controller 역할과 규칙에 대해 알아보자.

  • Model의 역할은 Controller에게 요청을 받아 비지니스 로직을 처리한다.
    • 비즈니스 로직과 데이터 처리 전담: Model은 데이터와 비즈니스 로직을 처리하고, 그 외의 역할을 하지 않습니다.
    • 상태 저장 및 변경 관리: 애플리케이션의 상태(데이터)는 Model에서만 관리합니다.
    • 뷰와 컨트롤러에 의존하지 않음: Model은 다른 요소에 대해 알 필요가 없습니다.
    • 데이터베이스와 상호작용을 캡슐화: 데이터베이스와 직접 상호작용하는 세부 사항은 Model 안에 숨겨져야 합니다.
  • View의 역할은 Model에서 처리한 비즈니스 로직 처리한 것을 받아 화면에 보여준다.
    1. 비즈니스 로직 포함 금지: View는 비즈니스 로직을 처리하지 않고, 데이터를 표현하는 데 집중해야 합니다.
    2. 모델의 상태를 직접 변경하지 않음: View는 데이터만 표현하며, 상태 변경은 Controller와 Model의 역할입니다.
    3. 컨트롤러와 협력: View는 사용자 입력을 Controller에 전달하고, Model에서 받은 데이터를 UI로 렌더링합니다.
  • Controller의 역할은 사용자의 요청을 Model과 Controller에게 요청을 한다.
    1. 모델과 뷰를 조율: Controller는 Model에서 비즈니스 로직을 처리하게 하고, 그 결과를 View에 전달합니다.
    2. 비즈니스 로직 포함 금지: Controller는 비즈니스 로직을 모델에 위임하며, 요청을 전달하고 결과를 조율하는 역할만 수행합니다.
    3. 입력 데이터의 검증: Controller는 사용자 입력 데이터를 검증하고, 유효한 데이터만 모델에 전달해야 합니다.

예시를 보여주면,

MVC 패턴 흐름

 

흐름을 글로 정리했을 때,

  1. 사용자가 웹 브라우저를 통해 요청을 보내면 Controller가 수신을 한다.
  2. Controller는 요청을 분석하여, 비즈니스 로직을 Model에게 요청을 한다.
  3. Model은 데이터베이스와 비즈니스 로직을 처리한 후, Controller에게 다시 전송한다.
  4. Controller는 View에게 전송한다.
  5. View는 사용자가 요청한 결과를 웹 브라우저에 렌더링 하게 된다.

 

만약, MVC 패턴을 쓰게 된다면 주의할 사항으로는?

  1. Controller에 많은 로직이 들어가게 된다면, Controller가 비대해질 뿐더러, 코드가 복잡해지기 질 수 있다. 그러므로, Controller는 사용자의 요청을 받고 비즈니스 로직은 Model에게 넘겨주는 역할만 준다.
  2. Model이 View에 의존하게 되면, 데이터와 UI 간의 결합도가 높아져서 확장성과 유지보수가 어려워질 수 있습니다.

개인적인 생각으로는 너무 많은 것을 요청하지 않고, 각자의 할 일만 할 수 있게 코드를 설계하는 것이 좋은 것 같다.

 

'Spring' 카테고리의 다른 글

[Spring] JSP/Servlet  (0) 2024.10.08
[Spring]  (1) 2024.09.30