본문 바로가기
Spring/MVC

스프링 MVC 구조

by o3oppp 2024. 5. 22.

동작 순서

  1. 핸들러 조회 : 핸들러 매핑을 통해 요청 URL에 매핑된 핸들러(컨트롤러)를 조회
  2. 핸들러 어댑터 조회 : 핸들러를 실행할 수 있는 핸들러 어댑터를 조회
  3. 핸들러 어댑터 실행 : 핸들러 어댑터를 실행
  4. 핸들러 실행 : 핸들러 어댑터가 실제 핸들러를 실행
  5. ModelAndView 반환 : 핸들러 어댑터는 핸들러가 반환하는 정보를 ModelAndView로 변환 후 반환
  6. viewResolver 호출 : 뷰 리졸버를 찾고 실행
  7. View 반환 : 뷰 리졸버는 뷰의 논리 이름을 물리 이름으로 바꾸고, 렌더링 역할을 담당하는 뷰 객체를 반환
  8. View 렌더링 : 뷰를 통해서 뷰를 렌더링 함

핸들러(컨트롤러) 조회

  • HandlerMapping
    • 핸들러 매핑에서 이 컨트롤러를 찾을 수 있어야 함
    • ex : 스프링 빈의 이름으로 핸들러를 찾을 수 있는 핸들러 매핑이 필요
  • HandlerAdapter
    • 핸들러 매핑을 통해서 찾은 핸들러를 실행할 수 있는 핸들러 어댑터가 필요
    • ex : Controller 인터페이스를 실행할 수 있는 핸들러 어댑터를 찾고 실행

우선순위

  • HandlerMapping
    1. RequestMappingHandlerMapping : 애노테이션 기반의 컨트롤러인 @RequestMapping에서 사용
    2. BeanNameUrlHandlerMapping : 스프링 빈의 이름으로 핸들러를 찾음
  • HandlerAdapter
    1. RequestMappingHandlerAdapter : 애노테이션 기반의 컨트롤러인 @RequestMapping에서 사용
    2. HttpRequestHandlerAdapter : HttpRequestHandler 처리
    3. SimpleControllerHandlerAdapter : Contoller 인터페이스 처리(@Controller와 다름)

'Spring > MVC' 카테고리의 다른 글

BindingResult  (0) 2024.06.27
Model과 @ModelAttribute  (0) 2024.06.08
@Controller와 @RestController  (1) 2024.06.06
@RequestBody와 @ResponseBody  (0) 2024.06.06
애노테이션(Annotation)  (0) 2024.05.23