Study/Spring

Spring MVC 패턴

슬기로운 개발자 2025. 1. 22. 13:47
728x90

I. Spring MVC란?

· Model-View-Controller 아키텍처 패턴을 기반으로 한 Spring Framework의 웹 애플리케이션 개발 모듈이다.

· 애플리케이션의 각 관심사를 명확히 분리하여 유연하고 유지보수하기 쉬운 코드를 작성가능.

 

1. 주요 구성 요소

@ Model

· 애플리케이션의 데이터와 비즈니스 로직을 담당.

· 데이터를 처리하거나 DB와 상호작용하는 역할.

· 데이터 객체(VO, DTO)와 이를 처리하는 서비스 계층이 포함될 수 있음.

 

@ View

· 사용자에게 데이털르 표시하는 역활.

· HTML, JSP, Thymeleaf 등 다양한 템플릿 엔진을 통해 구현 가능.

· 사용자 경험(UX)을 담당하며, 컨트롤러가 전달한 데이터를 표시.

@ Controller

· 사용자의 요청을 처리하고 적절한 응답을 반환하는 역할.

· 비즈니스 로직을 호출하고, 결과 데이터를 모델에 담아 뷰에 전달.

· Spring에서는 @Controller 또는 @RestController 애노테이션으로 정의.

 

2. Spring MVC 동작 흐름

1. 클라이언트 요청

· 클라이언트가 특정 URL로 요청을 보냄.

 

2. DispatcherServlet

· 모든 요청은 DispatcherServlet이 가장 먼저 받음.

· 이 서블릿은 프론트 컨트롤러 역할을 하며, 요청을 적절한 컨트롤러로 라우팅.

 

3. HandlerMapping

· DispatcherServlet은 HandlerMapping을 통해 요청에 매핑되는 컨트롤러를 찾음.

 

4. Controller 호출

· 매핑된 컨트롤러가 호출되고, 요청을 처리.

· 서비스 계층을 호출해 비즈니스 로직 실행.

· 처리 결과 데이터를 모델 객체에 저장.

 

5. ViewResolver 호출

· DispatcherServlet은 뷰 이름을 ViewResolver에 전달.

· ViewResolver는 적절한 뷰(JSP, Thymeleaf 등)를 선택하여 클라이언트에게 전달할 응답을 생성.

 

6. 응답 반환

· 클라이언트가 요청한 결과를 뷰를 통해 렌더링하여 반환.

3. Spring MVC의 장점.

· 유지보수성: 관심사의 분리를 통해 코드 가독성과 유지보수가 쉬움.

· 유연성: 다양한 뷰 기술(JSP, Thymeleaf, JSON 등)과 쉽게 통합.

· 확장성: 의존성 주입과 AOP를 통한 확장 가능.

· REST 지원: RESTful 웹 서비스 개발에 최적화된 기능 제공.

반응형