본문 바로가기
웹개발/spring && springboot

Spring mvc의 핵심 구성 요소

by 지구별 여행자 임탱 2024. 3. 28.
728x90

Spring MVC는 모델(Model), 뷰(View), 컨트롤러(Controller)의 구조로 이루어진 웹 애플리케이션을 개발하기 위한 프레임워크입니다. 사용자의 요청을 처리하고 그 결과를 사용자에게 돌려주는 과정에서 여러 핵심 구성 요소가 작동합니다.

 

DispatcherServlet
  - Spring MVC의 프론트 컨트롤러로, 모든 요청을 처음 받아들이는 진입점입니다. 적절한 컨트롤러로 요청을 전달하고, 컨트롤러가 반환한 결과를 뷰 리졸버로 전달하여 최종적으로 클라이언트에게 응답을 반환합니다.
  - 동작 과정: 클라이언트의 요청을 받음. 요청 URL을 분석하여 해당하는 컨트롤러를 찾기 위해 HandlerMapping에 요청.
                      HandlerMapping이 찾은 컨트롤러를 실행하기 위해 HandlerAdapter에 요청.
                      컨트롤러 실행 후 반환된 ModelAndView 객체를 ViewResolver에 전달.
                      ViewResolver가 뷰 이름을 기반으로 실제 뷰를 찾아 렌더링 후 클라이언트에게 응답 반환.


HandlerMapping
  - 클라이언트의 요청 URL을 처리할 컨트롤러를 찾는 역할을 합니다. DispatcherServlet이 요청을 받으면, HandlerMapping에게 어떤 컨트롤러가 해당 요청을 처리할 수 있는지 물어봅니다.
  - 특징: Spring MVC는 다양한 종류의 HandlerMapping을 제공합니다. 가장 일반적으로 사용되는 것은 RequestMappingHandlerMapping입니다. 


HandlerAdapter
  - HandlerMapping이 찾아낸 컨트롤러를 실행하는 역할을 합니다. 컨트롤러의 메서드를 호출하고, 그 결과를 ModelAndView 객체로 변환하여 DispatcherServlet에게 반환합니다.
  - 특징: 다양한 종류의 컨트롤러를 지원하기 위해 여러 HandlerAdapter가 존재합니다. 예를 들어, RequestMappingHandlerAdapter는 @RequestMapping 어노테이션이 붙은 메서드를 처리할 수 있습니다. 


ViewResolver
  - 컨트롤러의 처리 결과를 나타내는 뷰 이름을 바탕으로 실제 뷰 객체를 찾아내고, 뷰를 렌더링하는 역할을 합니다.
  - 특징: 뷰 이름에 해당하는 실제 뷰 페이지(예: JSP 파일)의 위치를 찾아 렌더링 과정을 진행합니다. InternalResourceViewResolver는 JSP와 같은 내부 리소스를 뷰로 해석하는 데 사용됩니다.