본문 바로가기
Back-end

Spring MVC

by 신재권 2023. 9. 15.

MVC란?

MVC는 소프트웨어 디자인 패턴으로, 애플리케이션을 세 가지 구성 요소로 분리하여 구조화하는 방법이다.

  • 모델(Model) : 애플리케이션의 데이터와 비즈니스 로직을 나타낸다. 모델은 데이터의 상태를 관리하고, 데이터 변경 시 알림을 View에 전달한다.
  • 뷰(View) : 데이터를 사용자 인터페이스로 표시허고, 사용자에게 정보를 제공한다. 뷰는 모델의 데이터를 표시하기 위해 모델에게 의존하며, 데이터가 변경되면 갱신된다.
  • 컨트롤러(Controller) : 사용자의 입력을 받고 모델 및 뷰 간의 상호작요을 조정한다. 컨트롤러는 요청을 처리하고 모델을 업데이트 하며, 업데이트된 데이터를 뷰에 전달한다.

Spring MVC란?

Spring MVC는 Java 기반 웹 애플리케이션을 개발할 때 MVC 아키텍처를 구현하는데 도움을 준다.

Spring MVC는 웹 애플리케이션의 요청과 응답을 처리한다.

  • DispatcherServlet : 모든 클라이언트의 요청을 받아 컨트롤러에 전달하고, 컨트롤러의 응답을 클라이언트에 반환하는 핵심 컨테이너 역할을 한다.
  • Controller : 클라이언트 요청을 처리하고, 모델을 업데이트 한 후, 적절한 뷰에 전달한다.
  • Model : 비즈니스 로직 및 데이터를 관리하는 부분으로, 클라이언트 요청에 따라 데이터를 업데이트하고 뷰에 전달한다.
  • View Resolver : 뷰를 찾고 뷰를 렌더링하여 클라이언트에게 응답을 전달한다.

Spring MVC 동작 구조

  1. 사용자가 Request를 보낸다.
  2. DispacherServlet이 요청을 받고, Handler Mapping을 통해 어느 Controller로 요청을 보낸지 선택한다.
  3. Handler Adapter를 통해 해당 Controller에게 요청을 보낸다.
  4. Controller에서 Service 등 비즈니스 로직을 처리하고, View 이름을 반환한다.
  5. View Resolver를 통해 맞는 View를 찾고 View를 사용자에게 Response 한다.

스프링 URL 인식 방법

먼저 DispatcherServlet은 클라이언트의 HTTP 요청을 받는다.

요청은 특정 URL로 들어오게 는데, 해당 URL을 기반으로 어떤 컨트롤러를 호출해야 할지 결정해야 한다.

Handler Mappiong을 통해 요청된 URL과 매핑된 컨트롤러 클래스, 메서드를 찾기 위해 URL 패턴을 검색한다.

URL 매핑을 기반으로 어떤 컨트롤러 클래스와 메서드를 호출할지 결정한다.

컨트롤러 DTO 인식

클라이언트가 HTTP 요청을 보내, body에 데이터를 포함시켜 보낼때, 대부분 JSON 형식으로 전송된다.

Spring은 @RequestBody 어노테이션이 적용된 메서드 파라미터를 찾는다.

요청 body의 데이터를 파싱하고, 해당 데이터를 메서드 파라미터의 자바 객체로 변환한다.

Jackson(JSON), JAXB(XML) 등의 메시지 컨버터를 사용해 수행한다.

변환된 자바 객체는 메서드의 파라미터로 전달되어 해당 메서드 내에서 사용된다.

'Back-end' 카테고리의 다른 글

Wrapper Type vs Primitive Type In JPA  (0) 2023.09.29
JPA  (0) 2023.09.20
@Bean, @Configuration  (0) 2023.09.14
불변성  (0) 2023.09.08
Spring DI 방식  (0) 2023.09.08