
XML이나 JSON을 이용한 AJAX기능이나 웹 서비스를 개발할 때 사용된다.@RequestBody와 @ResponseBody를 통해 HTTP 메시지 컨버터를 자동 사용할 수 있다.@RequestBody를 사용할 수 없고, 이 경우엔 @RequestParam이나 @ModelAttribute를 사용해야 한다.
BackgroundPreinitializer클래스는 이름그대로 미리초기화되는걸 관리하는 클래스인데, 내부적으로 MessageConverter를 생성하여 실행 시키는 것을 알 수 있다.
AllEncompassingFormHttpMessageConverter() HttpMessageConverter를 생성해주는 이 생성자를 따라 들어 가면Json을 model로 매핑해주는 MappingJackson2HttpMessageConverter를 만들어 주는게 보인다.
그럼 나머지 메시지컨버터는 어딨을까?
- 위
AllEncompassingFormHttpMessageConverter를 다시 보면,FormHttpMessageConverter를 상속하고 있는 것을 알 수 있다.- 그래서
FormHttpMessageConverter를 확인해보면 HttpMessageConverter를 List로 가지고 있다.- 우선순위는 List에 추가된 순서대로 탐색을 하기에, 추가된 순서를 따른다.
- ByteArrayHttpMessageConverter
- StringHttpMessageConverter
- SourceHttpMessageConvreter

@RequestBody byte[] param과 같이 작성하면 모든 요청을 다 byte배열로 받을 수 있다는 말이다.byte[]로 했을 경우 Content-Type이 applcation/octet-stream으로 설정되어 전달된다.HTTP 본문을 그대로 String으로 가져올 수 있다.Content-Type은 text/plainContent-Type이 application/octet-stream를 지원한다. 알려지지않은 파일 타입은 이타입을 사용한다.MediaType.APPLICATION_FORM_URLENCODED, MediaType.MULTIPART_FORM_DATA,MediaType.MULTIPART_MIXED이다.MediaType.APPLICATION_JSON만 지원한다.@EnableWebMvc안에 있는 WebMvcConfigurationSupport에 의해 재정의되고,더 많은 메시지컨버터들이 등록되어 관리받게 된다.@EnableWebMvc은 WebMvcConfigurer인터페이스를 상속받는 구현체 커스텀Configuration에 붙이는 애노테이션이다.@EnableWebMvc MVC 관련된 bean들을 수정할때 쓰인다고 한다.