HttpMessageConverter에 설정에 대해서 알아보도록 하겠습니다.
HttpMessageConverter 등록(설정)
1. HttpMessageConverter란
우선 HttpMessageConverter란 사용자의 요청 본문에 담긴 내용을 Controller 에서 사용하기위한 Argument로 변환하거나, 서버에서 생성한 응답 결과를 응답 본문에 작성할 때 사용됩니다.
("/")public Person message( Person person){ return person;}바로 위와 같이 @ResponseBody, @RequestBody를 사용할 때 HttpMessageConverter가 사용됩니다.
RestController
xxxxxxxxxxpublic class HelloController { ("/") //
public Person message( Person person){ return person; }}class 상단에 위와같이 @RestController가 붙어 있다면, 모든 메소드에 @ResponseBody를 부여한것과 같습니다, 따라서 @ResponseBody를 제거할 수도 있습니다.
2. 기본 HttpMessageConverter
- ByteArray
- String
- Resource
- Form
- ( JAXB2
Jackson2
Jacson
Gson
Atom
RSS )
Spring MVC에서는 기본으로 등록을 해주는 HttpMessageConverter 들이 있습니다. 그것들은 위와 같습니다. 괄호 안에 적힌 Converter들은 앞선 포스팅(https://galid1.tistory.com/532?category=783055)에서 알아보았듯이 @EnableWebMvc 어노테이션 이용시에 해당 라이브러리가 클래스패스에 존재한다면 자동으로 해당 HttpMessageConverter를 등록해주도록 되어있는 MessageConverter들입니다.
위의 기본 HttpMessageConverter들을 SpringBoot에서도 그대로 사용한다고 합니다.
String HttpMessageConverter
String Converter는 Http Body(메시지 본문)에 담긴 내용을 String으로 변환하거나 String을 Http Body(메시지본문)에 담을때 사용합니다.
xxxxxxxxxx("/message")public String message( String message){ return message;}위와 같은 Handler를 작성합니다. 간단히 사용자의 요청 본문에 담긴 message를 String으로 받아서, 그것을 그대로 응답 본문에 담아 return해주는 핸들러입니다.
xpublic void stringMessage() throws Exception{ mockMvc.perform(get("/message") .content("hello")) .andDo(print()) .andExpect(status().isOk()) .andExpect(content().string("hello"));}위와 같이 테스트 코드를 작성합니다.
성공입니다. 즉, String HttpMessageConverter는 Spring MVC가 자동으로 등록해주는 것을 알 수 있습니다.
3. HttpMessageConverter 등록(설정)방법
기본적으로 추가해주는 HttpMessageConverter에 의해서 거의 모두 해결 되므로 HttpMessageConverter를 직접 등록, 설정할 일은 거의 없지만, 그래도 필요한 경우에는 아래의 방법들로 해결할 수 있습니다.
3.1 ConfigureMessageConverter
WebMvcConfigurer 인터페이스에서 제공해주는 메소드입니다. 하지만 위의 메소드를 이용하여 MessageConverter를 추가하는 경우 기본 HttpMessageConverter가 등록되지 않습니다.
3.2 extendsMessageConverter
만약, 기본적으로 등록되는 HttpMessageConverter에 커스텀 MessageConverter를 추가하고 싶은 경우에는 extendsMessageConverter를 이용하면 됩니다.
3.3 의존성을 통한 HttpMessageConverter 설정
이 방법은 @EnableWebMvc어노테이션을 부여하여 SpringMVC 설정을 했을 경우, 특정 의존성이 추가되어 있는경우 자동으로 그에 맞는 HttpMessageConverter가 추가되는 것을 이용한 설정방법입니다. 설정 방법은 https://galid1.tistory.com/554?category=783055 포스팅의 3.4를 참고하시면 될것 같습니다.
'FrameWork > Spring MVC' 카테고리의 다른 글
| SpringMVC - 핸들러 메소드 - 3 (사용자 요청 데이터 Error 상황처리) (0) | 2019.05.23 |
|---|---|
| SpringMVC - 핸들러 메소드 - 2 (@ModelAttribute, @BindingResult, @Valid(매개변수 매핑, 에러, 유효성 검사 다루기)) (0) | 2019.05.23 |
| SpringMVC - 핸들러 메소드 - 1 (Mapping 어노테이션, 확장자, 요청헤더) (1) | 2019.05.16 |
| SpringMVC - Spring Mvc, H2, JPA, MyBatis 연동 환경 구성하기 (2) | 2019.05.13 |
| SpringMVC - Spring MVC 설정 - 3 (ResourceHandler) (1) | 2019.05.10 |