스프링 MVC 핵심 컴포넌트
1. DispatcherServlet
- 정의: 스프링 MVC의 핵심 컨트롤러로, 모든 HTTP 요청을 처리하는 중앙 서블릿
- 특징:
- 싱글톤 패턴으로 생성됨
- 웹 요청의 진입점이자 요청 처리의 중심
- 요청을 받아 적절한 핸들러로 라우팅
- 주요 역할:
- 요청 수신
- 핸들러 매핑
- 뷰 렌더링
- 예외 처리
- 추가 설명:
- 웹 애플리케이션 시작 시 단 하나만 생성
- 모든 요청의 진입점으로서 URL 매핑부터 응답 생성까지 전체 흐름 통제
2. HandlerMapping
- 정의: 요청된 URL에 매핑되는 핸들러(컨트롤러)를 찾는 인터페이스
- 특징:
- 싱글톤으로 관리됨
- 여러 구현체 존재 (RequestMappingHandlerMapping 등)
- 주요 역할:
- URL 패턴과 컨트롤러 메서드 간 매핑
- 요청에 적합한 핸들러 결정
- 추가 설명:
- 애플리케이션 시작 시 @RequestMapping 정보를 내부 맵으로 저장
- URL 패턴별 핸들러 메서드 정보를 보관
- RequestMappingHandlerMapping이 가장 일반적으로 사용
3. HandlerAdapter
- 정의: HandlerMapping에서 찾은 핸들러를 실제로 실행하는 인터페이스
- 특징:
- 싱글톤으로 관리됨
- 다양한 핸들러 메서드 실행 지원
- 주요 역할:
- 핸들러 메서드 호출
- 메서드 파라미터 바인딩
- 다양한 메서드 시그니처 지원
- 추가 설명:
- RequestMappingHandlerAdapter가 @RequestMapping 메서드 처리
- HttpServletRequest, @RequestParam, @PathVariable 등 다양한 파라미터 타입 자동 변환
- ArgumentResolver를 통한 파라미터 바인딩
4. Controller
- 정의: 실제 요청을 처리하는 핸들러
- 특징:
- 스프링 빈으로 등록되어 싱글톤으로 관리
- @Controller 또는 @RestController 어노테이션 필수
- 주요 역할:
- URL 매핑 (@RequestMapping)
- 비즈니스 로직 처리
- 응답 데이터 생성
5. ModelAndView
- 정의: 컨트롤러가 처리 결과와 view 정보를 함께 저장하는 객체
- 특징:
- 요청마다 새로 생성됨 (싱글톤 아님)
- 주요 역할:
- 데이터(Model) 저장
- 이동할 뷰(View) 정보 설정
6. ViewResolver
- 정의: 논리적 뷰 이름을 실제 물리적 뷰로 변환
- 특징:
- 싱글톤으로 관리됨
- 주요 역할:
- 뷰 이름 해석
- 적절한 View 객체 반환
7. View
- 정의: 최종적으로 클라이언트에게 보여줄 화면을 생성하는 객체
- 특징:
- 요청마다 새로 생성됨 (싱글톤 아님)
- 주요 역할:
- 모델 데이터 렌더링
- 최종 응답 생성
요청 처리 흐름
- 클라이언트 요청 → DispatcherServlet
- HandlerMapping으로 URL에 맞는 핸들러 검색
- 해당 핸들러를 처리할 수 있는 HandlerAdapter 선택
- HandlerAdapter가 핸들러 메서드 실행
- 처리 결과를 ModelAndView로 변환
- ViewResolver로 뷰 검색
- View가 최종 응답 생성
컴포넌트 생명주기
- 애플리케이션 시작 시 생성 (싱글톤)
- DispatcherServlet
- HandlerMapping
- HandlerAdapter
- Controller
- ViewResolver
- 요청마다 생성
- ModelAndView
- View
URL 매핑 처리
- @RequestMapping으로 URL과 메서드 매핑
- 컴포넌트 스캔으로 컨트롤러 자동 등록
- 핸들러 매핑이 URL-메서드 정보 관리
- 핸들러 어댑터가 메서드 실행 담당

'스프링' 카테고리의 다른 글
스프링 - 스프링 시큐리티를 이용한 로그인 구현하기 (1) (1) | 2024.12.15 |
---|---|
스프링 - 트랜잭션 이해 (2) (0) | 2024.12.13 |
스프링 파라미터 처리 과정 (0) | 2024.12.12 |
스프링 - 스프링 (0) | 2024.12.09 |
스프링 - HTTP 파라미터 처리 방식 (0) | 2024.12.06 |
댓글