1. SpringMVC 구조
2. RequestMappingHandlerAdapter 동작 방식
애노테이션 기반의 컨트롤러는 매우 다양한 파라미터를 사용할 수 있다.
이렇게 유연한 파라미터 처리가 가능한 이유는 ArgumentResolver 때문이다.
애노테이션 기반 컨트롤러를 처리하는 RequestMappingHandlerAdapter는 바로 이 ArgumentResolver를 호출해서 컨트롤러가 필요로 하는 다양한 파라미터의 값(객체)을 생성한다.
파라미터 값이 준비되면 컨트롤러를 호출하면서 컨트롤러의 반환 값을 반환한다.
ArgumentResolver의 supportsParameter()를 호출해서 해당 파라미터를 지원하는지 체크하고,
지원하면 resolveArgument()를 호출해서 실제 객체를 생성한다. 그리고 이렇게 생성된 객체가 컨트롤러 호출시 넘어가는 것이다.
3. ReturnValueHandler
응답 값을 변환하고 반환한다.
예시로 ModelAndView , @ResponseBody , HttpEntity , String 등이 있을 때 변환해준다.
4. HTTP 메시지 컨버터
5. 기능 확장
인프런 강의 - 김영한
스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술
https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-mvc-1/dashboard