스프링 프레임워크 모듈 중 웹 계층을 담당하는 모듈 -> 서블릿 API를 기반으로 클라이언트의 요청을 처리하는 모듈 -> 이를 스프링 웹 MVC 라고 한다.
서블릿
- 클라이언트의 요청을 처리하도록 특정 규약에 맞춰 Java 코드로 작성하는 클래스 파일
- Apache Tomcat은 이러한 서블릿들이 웹애플리케이션으로 실행할 수 있도록 해주는 서블릿 컨테이너 중 하나임.
- spring MVC 내부에서는 서블릿을 기반으로 웹애플리케이션을 동작하며, 스프링 부트는 기본적으로 아파치 톰캣이 내장되어 있.
MVC (Model, View, Controller)
- 애플리케이션을 개발할 때 사용하는 디자인 패턴
- 개발 영역을 MVC로 구분하여 각 역할에 맞게 코드를 작성
Model
- 클라이언트의 요청을 전달받으면 요청사항을 처리하기 위한 작업을 하는데, 처리한 작업의 결과 데이터를 클라이언트에게 응답 해야됨. 이때 클라이언트에게 응답으로 돌려주는 작업의 처리결과 데이터를 Model 이라 함.
- Service layer : 클라이언트의 요청 사항을 구체적으로 처리하는 영역
- Business Logic : 요청사항을 처리하기 위해 Java 코드로 구현한 것
View
- Model을 이용하여 웹브라우저와 같은 애플리케이션의 화면에 보이는 리소스를 제공하는 역할
- 다양한 View 기술 : HTML 페이지 출력 / PDF, Excel 등의 문서 형태로 출력 / XML, JSON 등 특정 형식의 포맷으로 변환
Controller
- 클라이언트 측의 요청을 직접적으로 전달받는 앤드포인트로 Model과 View 중간에서 상호작용을 해주는 역할
- 클라이언트 측 요청을 전달받아 -> 비즈니스 로직을 거친 후 -> Model 데이터가 만들어지면 -> 이 Model 데이터를 View로 전달
MVC 패턴 구조
이 그림의 구조를 그대로 사용하는 것이 Spring MVC -> 구조가 복잡해지는 한계
!!! 이러한 한계를 극복하게 해주는 것이 Spring MVC !!!
Spring MVC 동작 방식과 구성요소
DispatcherServlet 은 HttpServlet을 상속받아 사용하고, 서블릿으로 동작함.
DispatcherServlet -> FrameworkServlet -> HttpServletBean -> HttpServlet
DispatcherServlet을 사용하면, 서블릿으로 등록하면서 모든 경로에 대해 매핑함.
서블릿이 호출되면 -> HttpServlet이 제공하는 service() 가 호출됨.
스프링 MVC는 FrameworkServlet.service() 를 시작으로 여러 메서드가 호출되면서 DispatcherServlet.doDispatch() 가 최종적으로 호출됨.
'공간정보아카데미' 카테고리의 다른 글
Spring AOP - LogAdivce 구현 예제 (0) | 2025.09.06 |
---|---|
MyBatis - Logging (0) | 2025.09.04 |
Loosely coupled vs Tightly-coupled (0) | 2025.09.03 |
스프링에서 Bean은 어떻게 등록되고 주입될까? (XML & Annotation 비교) (0) | 2025.09.02 |
[JDBC 커넥션 풀] DBCP2 vs hikariCP vs c3p0 (0) | 2025.09.02 |