Spring MVC 패턴
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 웹 서비스 개발에 최적화된 기능 제공.