TIL-Converter (Spring 심화 1주차)_25.04.15

kb·2025년 4월 15일

Spring

목록 보기
15/21

백지 요약

  • Converter는 입력 <-> 출력 사이에서 데이터 양식을 바꿔주는 역할
  • Converter는 크게 HttpMessageConverter와 ConversionService로 나뉨
  • HttpMessageConverter는 HTTP Body 값을 변환해줌. @RequestBody, @HttpEntity, @RequestEntity / @ResponseBody, @HttpEntity, @ResponseEntity에 사용 -> json to 다른 양식으로 변환
  • ConversionService는 Converter의 묶음. Converter를 Custom해서 ConversionService에 추가해 사용 가능
  • ConversionService는 HTTP Body 이외의 입력 (@Path, @RequestParam, @ModelAttribute)을 변환할 때 사용
  • formatter는 Converter의 일종인데, 세밀한 양식(form)으로 바꿔주고 싶을 때 사용함
  • 주로 String을 특정 양식으로 바꿀 때 사용한다고.
  • formatter, converter 모두 ConversionService에 통합되어 사용되는데, 그럼 json 데이터 중 일부는 특정 데이터 양식으로 못 바꾸냐?
  • 이걸 가능하게 하는게 de삐리리lizer / @JsonFormat인가? 이거였던 듯. 세부적인 방법은 차차 익혀가면 되고, HttpMessageConverter, ConversionService가 각각 언제 쓰이는 건지 아는게 중요한 것 같다!

백지 요약에 대한 Dr.G 피드백

  • 당근
  • 채찍
  • Spring의 변환 매커니즘은 두 가지다! HttpMessageConverter와 ConversionService. 전자는 JSON/XML <-> 객체 / 후자는 (대부분) String <-> 타입 변환
  • Formatter는 Converter<String, T>와 Converter<T, String>을 쌍으로 구현하는 특별한 Converter라고! 국제화나 숫자/날짜 포맷 지정에 유용!
  • JSON 안의 세부 필드들을 어떻게 직렬화/역직렬화할지 정하는 건 Jackson 라이브러리가 담당! @JsonFormat, @JsonDeserialize, @JsonSerialize 같은 어노테이션이 이걸 가능하게 함
  • Converter는 가장 상위 개념. 타입 간 데이터 변환을 담당하는 녀석
  • ConversionService는 여러 Converter/Formatter를 등록/관리하는 변환 인프라(주로 단일 값에 사용)
  • HttpMessageConverter: HTTP 요청/응답 바디 전체를 객체 <-> JSON 등으로 변환 (Jackson 기반)
  • Formatter : Converter의 특수한 형태. 포맷 제어 및 국제화 대응
  • JSON의 세부 필드 변환은 @JsonFormat, @JsonDeserializer 등을 사용해 Jackson에서 처리
  • 핵심은 "어떤 데이터가 어디에서 오느냐에 따라 어떤 변환 시스템이 동작하는지를 구분하는 것!"
    정리 좋았다!
profile
Experience

0개의 댓글