- HttpMessageConverter
- 사용처
- HTTP 요청 : @RequestBody, HttpEntity<>, RequestEntity<>
- HTTP 응답 : @ResponseBody, HttpEntity<>, ResponseEntity<>
- 우선순위
- byte[]
- String
- JSON
- 사용처
- Spring 내부 구조
- ArgumentResolver
- HTTP 요청이 컨트롤러 메서드에 전달될 때 각 파라미터를 알맞은 객체로 변환하는 인터페이스
- ReturnValueHandler
- 컨트롤러 메서드가 반환하는 값을 처리하여 HTTP 응답에 맞게 변환하는 인터페이스
- Converter, Formatter
- Converter
- 특정 타입을 다른 타입으로 변환할 때 사용하는 인터페이스
- Formatter
- 사용자 지정 포맷을 적용해 데이터 변환을 처리할 때 사용하는 인터페이스
- WebMvcConfigurer
- 설정을 통해 Converter, Formatter를 추가할 수 있다.
- ConversionService
- 어댑터 패턴
- Converter, Formatter 일관성 있게 사용할 수 있다.
- HttpMessageConverter
- ConversionService가 적용되지 않는다.
- 역할
- 요청 메세지 본문(RequestBody)을 객체로 변환하거나
- 객체를 응답 본문(ResponseBody)에 입력하는 것
- JSON을 객체로 변환하는데는 Jackson 라이브러리를 사용한다.
- @JsonFormat, Deserializer 사용
- ConversionService는 대표적으로 @RequestParam, @ModelAttribute, @PathVariable 등에서 사용한다.
- Converter, Fommatter를 직접 구현하고, ConversionService에 등록해서 사용할 수 있다.
- Converter
- 핵심
- Spring에서 제공하는 대부분의 기능은 인터페이스로 만들어져 있다.
- 기본적으로 제공하는 구현체들이 다양하다.
- 개발자는 만들어진 기능을 잘 사용하면된다.
- 만약 확장하고자 하는 영역이 있다면 그 부분을 확장시켜 프로젝트에 적용하면 된다.
- 확장을 위해 반드시 내부 구조를 알아야한다!
- HttpMessageConverter
- 사용처
- HTTP 요청 : @RequestBody, HttpEntity<>, RequestEntity<>
- HTTP 응답 : @ResponseBody, HttpEntity<>, ResponseEntity<>
- 우선순위
- byte[]
- String
- JSON
- 사용처
- Spring 내부 구조
- ArgumentResolver
- HTTP 요청이 컨트롤러 메서드에 전달될 때 각 파라미터를 알맞은 객체로 변환하는 인터페이스
- ReturnValueHandler
- 컨트롤러 메서드가 반환하는 값을 처리하여 HTTP 응답에 맞게 변환하는 인터페이스
- ArgumentResolver
- Converter, Formatter
- Converter
- 특정 타입을 다른 타입으로 변환할 때 사용하는 인터페이스
- Formatter
- 사용자 지정 포맷을 적용해 데이터 변환을 처리할 때 사용하는 인터페이스
- WebMvcConfigurer
- 설정을 통해 Converter, Formatter를 추가할 수 있다.
- ConversionService
- 어댑터 패턴
- Converter, Formatter 일관성 있게 사용할 수 있다.
- HttpMessageConverter
- ConversionService가 적용되지 않는다.
- 역할
- 요청 메세지 본문(RequestBody)을 객체로 변환하거나
- 객체를 응답 본문(ResponseBody)에 입력하는 것
- JSON을 객체로 변환하는데는 Jackson 라이브러리를 사용한다.
- @JsonFormat, Deserializer 사용
- ConversionService는 대표적으로 @RequestParam, @ModelAttribute, @PathVariable 등에서 사용한다.
- Converter, Fommatter를 직접 구현하고, ConversionService에 등록해서 사용할 수 있다.
- Converter
- 핵심
- Spring에서 제공하는 대부분의 기능은 인터페이스로 만들어져 있다.
- 기본적으로 제공하는 구현체들이 다양하다.
- 개발자는 만들어진 기능을 잘 사용하면된다.
- 만약 확장하고자 하는 영역이 있다면 그 부분을 확장시켜 프로젝트에 적용하면 된다.
- 확장을 위해 반드시 내부 구조를 알아야한다!