본문 바로가기

Spring

Spring MVC 패턴

MVC 패턴이란

MVC 패턴

  • 소프트웨어 디자인 패턴 중 하나
  • M (Model) / V (View) / C(Controller)
    • Model: 어플리케이션 정보나 데이터, DB등을 의미함
    • View: 사용자에게 보여지는 화면, UI를 말함
    • Controller 데이터와 비즈니스 로직 사이의 상호 동작을 관리함. 즉, 모델과 뷰를 통제한다. MVC패턴에서 View와 Model이 직접적인 상호 소통을 하지 않도록 관리함
  • MVC 패턴은 MVC1 패턴과, 스프링이 사용하고 있는 MVC2 패턴으로 나눌 수 있음

MVC1

MVC 1 패턴

  • 위 패턴의 경우 View와 Controller를 JSP가 담당하는 형태를 가짐
  • 구현 난이도는 쉬우나, 내용이 복잡하고 거대해질수록 이 패턴은 힘을 잃는다. (유지보수에 있어서 문제가 발생한다)

MVC2

MVC2 패턴

  • 위 패턴은 널리 표준으로 사용되는 패턴이다.
  • MVC1과 다르게 Controller, View가 분리되어 있다.
  • Controller은 RequestMapping을 통해 URL을 확인하여 View에 던져줄지, Service로 들어가 추가적인 Business Login을 할지 결정한다.
  • 요청을 하나의 컨트롤러(Servlet)이 먼저 받고, 역할이 분리되어 MVC 패턴에서 단점을 보완할 수 있다.
  • 즉, 개발자는 M, V, C 중에서 수정해야 할 부분이 있다면, 그것만 꺼내어서 수정하면 된다. (유지보수 좋음)

Spring MVC Framework

Spring MVC Framework
Spring MVC Framework

동작순서

  1. Client로부터 요청이 들어오면 DispatcherServlet 효출
  2. DispatcherServlet은 받은 요청을 HandlerMapping에게 던져줌, 요청받은 URL을 분석하여 HandlerMapping이 적합한 Controller를 선택하여 반환한다.
  3. DispatcherServlet은 다음으로 HandlerAdapter를 호출한다. HandlerAdapter은 해당하는 Controller중 요청한 URL에 맞는 적합한 Method를 찾아준다.
  4. Controller은 Business Logic을 처리하고, 해당하는 결과를 View에 전달할 객체를 Model에 저장한다.
  5. Controller은 View name을 DispatcherServlet에 리턴한다.
  6. DispatcherServlet은 ViewResolver를 호출하여 Controller가 리턴한 View name을 기반으로 적합한 View를 찾아준다.
  7. DispatcherServlet은 View 객체에 처리결과를 넘겨 최종 결과를 보여주도록 요청한다.
  8. View 객체는 해당하는 View를 호출하며, View는 Model 객체에서 화면 표시에 필요한 객체를 가져와 화면 표시를 처리하고 Client에게 넘겨준다.

'Spring' 카테고리의 다른 글

스프링 부트 테스트 코드 작성 방법  (0) 2022.09.02
[Spring] Spring Bean 정리  (0) 2022.07.28