요청 매핑 핸들러 어댑터 구조

SHByun·2023년 1월 25일
0

강의 chap6-14


요청 매핑 핸들러 어댑터 구조

1. SpringMVC 구조

  • HTTP 메시지 컨버터는 스프링 MVC 어디에서 동작하는지 확인해본다.
  • 모든 애노테이션 기반의 컨트롤러는 @RequestMapping을 처리하는 핸들러 어댑터(RequestMappingHandlerAdapter)에 있다.

2. RequestMappingHandlerAdapter 동작 방식

  • 애노테이션 기반의 컨트롤러는 매우 다양한 파라미터를 사용할 수 있다.

  • 이렇게 유연한 파라미터 처리가 가능한 이유는 ArgumentResolver 때문이다.

  • 애노테이션 기반 컨트롤러를 처리하는 RequestMappingHandlerAdapter는 바로 이 ArgumentResolver를 호출해서 컨트롤러가 필요로 하는 다양한 파라미터의 값(객체)을 생성한다.

  • 파라미터 값이 준비되면 컨트롤러를 호출하면서 컨트롤러의 반환 값을 반환한다.

  • ArgumentResolver의 supportsParameter()를 호출해서 해당 파라미터를 지원하는지 체크하고,
    지원하면 resolveArgument()를 호출해서 실제 객체를 생성한다. 그리고 이렇게 생성된 객체가 컨트롤러 호출시 넘어가는 것이다.

3. ReturnValueHandler

  • 응답 값을 변환하고 반환한다.

  • 예시로 ModelAndView , @ResponseBody , HttpEntity , String 등이 있을 때 변환해준다.

4. HTTP 메시지 컨버터

  • HTTP 메시지 컨버터를 사용하는 @RequestBody도 컨트롤러가 필요로 하는 파라미터의 값에 사용된다. @ResponseBody의 경우도 컨트롤러의 반환 값을 이용한다.
  • ArgumentResolver들이 HTTP 메시지 컨버터를 사용해서 필요한 객체를 생성해서 요청, 응답을 한다.

5. 기능 확장

  • 기능 확장은 WebMvcConfigurer를 상속받아서 스프링 빈으로 등록하면 된다.
  • 스프링이 필요한 대부분의 기능을 제공하기 때문에 실제 기능을 확장할 일이 많지는 않다.

출처

인프런 강의 - 김영한
스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-mvc-1/dashboard

profile
안녕하세요

0개의 댓글