카테고리 없음

스프링 심화(HttpMessageConverter,ArgumentResolver,ReturnValueHandle)

suuuki 2024. 11. 26. 22:39
  • 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
      • 사용자 지정 포맷을 적용해 데이터 변환을 처리할 때 사용하는 인터페이스
    • WebMvcConfigurer
      • 설정을 통해 Converter, Formatter를 추가할 수 있다.
    • ConversionService
      • 어댑터 패턴
      • Converter, Formatter 일관성 있게 사용할 수 있다.
    • HttpMessageConverter
      • ConversionService가 적용되지 않는다.
      • 역할
        1. 요청 메세지 본문(RequestBody)을 객체로 변환하거나
        2. 객체를 응답 본문(ResponseBody)에 입력하는 것
      • JSON을 객체로 변환하는데는 Jackson 라이브러리를 사용한다.
        • @JsonFormat, Deserializer 사용
    • ConversionService는 대표적으로 @RequestParam, @ModelAttribute, @PathVariable 등에서 사용한다.
    • Converter, Fommatter를 직접 구현하고, ConversionService에 등록해서 사용할 수 있다.
  • 핵심
    • Spring에서 제공하는 대부분의 기능은 인터페이스로 만들어져 있다.
    • 기본적으로 제공하는 구현체들이 다양하다.
    • 개발자는 만들어진 기능을 잘 사용하면된다.
    • 만약 확장하고자 하는 영역이 있다면 그 부분을 확장시켜 프로젝트에 적용하면 된다.
      • 확장을 위해 반드시 내부 구조를 알아야한다!
      • 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
          • 사용자 지정 포맷을 적용해 데이터 변환을 처리할 때 사용하는 인터페이스
        • WebMvcConfigurer
          • 설정을 통해 Converter, Formatter를 추가할 수 있다.
        • ConversionService
          • 어댑터 패턴
          • Converter, Formatter 일관성 있게 사용할 수 있다.
        • HttpMessageConverter
          • ConversionService가 적용되지 않는다.
          • 역할
            1. 요청 메세지 본문(RequestBody)을 객체로 변환하거나
            2. 객체를 응답 본문(ResponseBody)에 입력하는 것
          • JSON을 객체로 변환하는데는 Jackson 라이브러리를 사용한다.
            • @JsonFormat, Deserializer 사용
        • ConversionService는 대표적으로 @RequestParam, @ModelAttribute, @PathVariable 등에서 사용한다.
        • Converter, Fommatter를 직접 구현하고, ConversionService에 등록해서 사용할 수 있다.
      • 핵심
        • Spring에서 제공하는 대부분의 기능은 인터페이스로 만들어져 있다.
        • 기본적으로 제공하는 구현체들이 다양하다.
        • 개발자는 만들어진 기능을 잘 사용하면된다.
        • 만약 확장하고자 하는 영역이 있다면 그 부분을 확장시켜 프로젝트에 적용하면 된다.
          • 확장을 위해 반드시 내부 구조를 알아야한다!