TIL #40

무너·2024년 11월 26일

Spring 심화 1주차

  • HttpMessageConverter

    • 사용처
      1. HTTP 요청 : @RequestBody, HttpEntity<>, RequestEntity<>
      2. HTTP 응답 : @ResponseBody, HttpEntity<>, ResponseEntity<>
    • 우선순위
      1. byte[]
      2. String
      3. JSON
  • Spring 내부 구조

    • ArgumentResolver
      • HTTP 요청이 컨트롤러 메서드에 전달될 때 각 파라미터를 알맞은 객체로 변환하는 인터페이스
    • ReturnValueHandler
      • 컨트롤러 메서드가 반환하는 값을 처리하여 HTTP 응답에 맞게 변환하는 인터페이스
  • Converter, Formatter

    • Converter
      • 특정 타입을 다른 타입으로 변환할 때 사용하는 인터페이스
      • 범용(객체 → 객체로 변환)
    • Formatter
      • 사용자 지정 포맷을 적용해 데이터 변환을 처리할 때 사용하는 인터페이스
      • 문자에 특화(객체 → 문자, 문자 → 객체) + 현지화(Locale)
    • WebMvcConfigurer
      • 설정을 통해 Converter, Formatter 추가
    • ConversionService
      • 어댑터 패턴
      • Converter, Formatter 일관성 있게 사용
    • HttpMessageConverter
      • ConversionService 적용 안 됨
      • 역할
        1. 요청 메세지 본문(RequestBody)을 객체로 변환하거나
        2. 객체를 응답 본문(ResponseBody)에 입력하는 것
      • JSON을 객체로 변환하는데는 Jackson 라이브러리 사용
        • @JsonFormat, Deserializer 사용
    • ConversionService는 대표적으로 @RequestParam, @ModelAttribute, @PathVariable 등에서 사용
    • Converter, Fommatter를 직접 구현하고, ConversionService에 등록해서 사용
  • 직렬화(Serialize)

    • 자바 시스템 내부에서 사용되는 Object 또는 Data를 외부의 자바 시스템에서도 사용할 수 있도록 byte 형태로 데이터를 변환
    • JVM(Java Virtual Machine 이하 JVM)의 메모리에 상주(힙 또는 스택)되어 있는 객체 데이터를 바이트 형태로 변환
  • 역직렬화(Deserialize)

    • byte로 변환된 Data를 원래대로 Object나 Data로 변환
    • 직렬화된 바이트 형태의 데이터를 객체로 변환해서 JVM으로 상주시키는 형태
profile
공부 기록📝

0개의 댓글