[Spring] 스프링 심화 공부

석연걸·2025년 2월 21일

스파르타 코딩클럽

목록 보기
17/17

HttpMessageConverter

  • View로 응답하는 것이 아닌 Rest API로 JSON, Text, Xml 등의 데이터를 직접 응답 Message Body에 입력하는 경우 HttpMessageConverter를 사용한다.

  • 동작 순서

대표적인 HttpMessageConverter

  • ByteArrayHttpMessageConverter
    • byte[] 데이터를 처리한다.
    • 대상 : byte[]
    • MediaType : */*
    • 반환 : application/octet-stram

  • StringHttpMessageConverter
    • String 데이터를 처리한다.
    • 대상 : String
    • MediaType : */*
    • 반환 : text/plain

  • MappingJackson2HttpMessageConverter
    • JSON 데이터를 처리한다.
    • 대상 : Object, HashMap
    • MediaType : application/json
    • 반환 : application/json

  • 우선순위
    • ByteArray ➡ String ➡ JSON ➡ 기타
    • 대부분 위의 3개로 해결됨

RequestMappingHandlerAdapter

RequestMappingHandlerAdapter

  • HTTP 요청을 컨트롤러에 매핑하고 실행하는 핵심 구성요소
  • 클라이언트 요청을 적절한 컨트롤러와 연결 -> 메서드를 호출해 결과 반환
  • @RequestMapping을 처리하는 Handler Adapter의 구현체이다.

Argument Resolver

ReturnValueHandler

  • 컨트롤러 메서드가 반환하는 값을 HTTP 응답에 맞게 변환하는 역할 (인터페이스)
  • @ResponseBody, HttpEntity<>, ModelAndView가 있으면 해당 응답에 필요한 값으로 반환

RequestMappingHandlerAdapter 구조

  • 요청 시 : Argument Resolver가 HttpMessageConverter를 사용
  • 응답 시 : ReturnValueHandler가 HttpMessageConverter를 사용

WebMvcConfigurer

  • Spring MVC의 설정을 사용자 정의할 수 있도록 만든 인터페이스

  • 주요 메서드
    • void addArgumentsResolvers()
    • void addReturnValueHandlers()
    • void extendMessageConverters()

  • 위를 사용하는 주요 인터페이스
    • HandlerMethodArgumentResolver
    • HandlerMethodReturnValueHandler
    • HttpMessageConverter

ConversionService

  • Converter를 모아서 편리하게 관리하고 사용할 수 있게 해주는 기능
  • DefaultConversionService
    • Spring의 표준 ConversionService로 기본으로 제공된 Converter와 확장 가능성을 통해 다양한 타입 변환을 유연하게 처리할 수 있도록 지원

Formatter

FormattingConversionService

0개의 댓글