개인적으로 스프링 MVC를 처음 공부할 때 가장 이해하기 어려운 부분이 HandlerAdapter이었는데요. 최범균님의 스프링5 책 덕분에 갈증을 해소하게 되었습니다. 포스팅은 범균님의 스프링5, 영한님의 스프링 MVC 1,2 편 강의가 섞여 정리되어 있습니다.
HandlerAdapter : 컨트롤러 역할을 하는 클래스를 공통으로 처리하는 주체
스프링 2.5 이후에는 @Controller 애노테이션을 많이 사용했지만 과거에는 Controller 인터페이스를 이용했습니다.
또한 특수 목적으로 사용되는 HttpRequestHandler 인터페이스까지 컨트롤러를 구현할 수 있는 방법은 여러가지입니다. 이 여러가지 방법을 동일한 방식으로 처리하기 위해 중간에 사용되는 것이 바로 HandlerAdapter입니다.
HandlerAdapter 역할을 그림으로 나타내면 아래와 같습니다.
HandlerAdapter 대표적인 구현체는 RequestMappingHandlerAdapter인데요. 실제로 클래스를 살펴보면 상당히 복잡합니다. 무언가 역할이 더 있는 것 같은데요. 그 중 하나가 ArgumentResolver 호출입니다.
api를 개발할 때 우리는 @RequestBody, @PathVariable, 시큐리티의 @AuthenticatedPrincapal 등 다양한 파라미터 애노테이션을 사용합니다.
이들은 어떻게 잘 동작할 수 있을까요? 바로 이것을 가능하게 해주는 객체가 ArgumentResolver입니다. 다음 포스팅에선 ArgumentResolver에 대해 다뤄보겠습니다.
정리
HandlerAdapter 주요 역할
1. 컨트롤러 역할을 할 수 있는 객체 공통 처리
2. ArgumentResolver 호출
'Spring > core' 카테고리의 다른 글
ArgumentResolver (0) | 2023.04.08 |
---|---|
프록시 내부 호출 문제 해결 방법 - 자기 주입, 지연 조회, 구조 변경 (0) | 2023.03.26 |
스프링 빈 순환 참조 예외 BeanCurrentlyInCreationException (0) | 2023.03.26 |
스프링5 프로그래밍 입문 - ch7. AOP 프로그래밍 - (2) AOP (0) | 2023.03.25 |
스프링5 프로그래밍 입문 - ch7. AOP 프로그래밍 - (1) 프록시 (0) | 2023.03.25 |