-
[Spring] ArgumentResolverSpring 2025. 4. 17. 15:29
Spring
🔥 Spring MVC에서 HTTP 요청을 컨트롤러 메서드에 매핑하고 실행하는 핵심 구성 요소!
🎯 클라이언트 요청을 적절한 컨트롤러 메서드와 연결한 후 이 메서드를 호출하여 결과를 반환하는 역할을 수행한다.
✅ RequestMappingHandlerAdapter

@RequestMapping @PostMapping @GetMapping @PutMapping @PatchMapping DeleteMapping - Spring MVC에서 클라이언트 요청을 실제 컨트롤러 메서드에 연결하고 실행해주는 핵심 클래스.
- Client 요청 → DispartcherServlet(프론트 서블릿) → RequestMappingHandlerMapping(어떤 메서드 실행할지 탐색 URI 맴핑) → RequestMappingHandlerAdapter(실제 메서드 실행 + 응답 생성) → Respon 반환
🔥 ArgumentResolver (매개 변수, 파라미터 Resolver)
🎯 Spring MVC에서 컨트롤러 메서드의 파라미터를 자동으로 바인딩하는 역할을 하는 인터페이스
🎯 요청이 컨트롤러 메서드에 전달될 때 각 파라미터를 적절한 객체로 변환하여 주입하는 것을 담당한다.
✅ ArgumentResolver
- ArgumentResolver의 풀 네임 HandleMethodArgumentResolver
■ 인터페이스로 구성 되어 있다.
■ implements 하여 커스텀하게 파라미터를 만들 수 있다.(확장)
- supportsParameter(MethodParameter parameter);
■ 컨트롤러가 필요하는 메서드의 파라미터를 지원하는지 여부를 검사한다.
- 지원한다면 resolveArgument()메서드를 통해 Object(객체)로 만들어 준다.
■ 만들어진 Object(객체)가 Controller 호출시 메서드의 파라미터로 전달된다.

@GetMapping("/api/users/{id}") public ResponseEntity<User> getUserById(@PathVariable Long id) { // 여기서 id는 어디서 온 걸까? }이때, URL의 id를 꺼내오는 것이 HandlerMethodArgumentResolver가 자동으로 처리한다.
종 담당 Target ArgumentResolver PathVarialbeMethodArguementResolver @pathVariable RequestParamMethodArgumentResolver @RequestParam RequestBodyMethodArgumentResolver @RequestBody HttpServeltRequestMethodArgumentResolver @HttpServeltRequest ModelAtributeMethodArgumentResolver @ModelAtribute RequestHeaderMethodArgumentResolver @RequestHeader - RequestMappingHandlerAdapter는 ArgumentResolver를 호출하여 Controller가 필요한 다양한 파라미터의 값을
생성한다. - HttpServletRequest, Model, HttpEntity,@ModelAttribute, @RequestBody, @RequestParam 등 다양한 파라미터를 바인딩을 할수 있는 이유는 ArgumentResolver를 통하여 값이 준비되면 해당값을 가지고 실제 Controller를 호출한다.
🔥 ReturnValueHandler
🎯 Spring MVC에서 컨트롤러 메서드가 반환하는 값을 처리하여 HTTP 응답에 맞게 변환하는 역 할을 하는 인터페이스
🎯 컨트롤러 메서드가 실행된 후 그 반환값을 HTTP 응답의 본문에 적절히 담아 전송할 수 있도록 도와준다.
✅ ReturnValueHandler의 흐름
1. 사용자가 요청을 보냄 → DispatcherServlet → HandlerMapping으로 컨트롤러 찾음 → HandlerAdapter로 컨트롤러 실행
→ 컨트롤러의 반환값이 나옴 → ReturnValueHandler가 등장해서 이걸 HTTP 응답으로 바꿈종류 처리 타입 ReturnValueHandler ViewNameMethodReturnValueHandler String ModelAndViewMethodReturnValueHandler ModelAndView RequestResponseBodyMethodProcessor @ResponseBody → 객체 HttpEntityMethodProcessor HttpEntity, ResponseEntity 'Spring' 카테고리의 다른 글
[Spring]WebMvcConfigurer (0) 2025.04.17 [Spring] HttpMessageConverter(2) (0) 2025.04.17 [Spring] HttpMessageConverter (0) 2025.04.17 [Spring] 트랜잭션 (0) 2025.04.17 [Spring] 고아 객체 (0) 2025.04.17 - Spring MVC에서 클라이언트 요청을 실제 컨트롤러 메서드에 연결하고 실행해주는 핵심 클래스.
