HttpMessageConverter에 설정에 대해서 알아보도록 하겠습니다.
HttpMessageConverter 등록(설정)
1. HttpMessageConverter란
우선 HttpMessageConverter
란 사용자의 요청 본문
에 담긴 내용을 Controller 에서 사용하기위한 Argument로 변환하거나, 서버에서 생성한 응답 결과를 응답 본문
에 작성할 때 사용됩니다.
"/") (
public Person message( Person person){
return person;
}
바로 위와 같이 @ResponseBody, @RequestBody
를 사용할 때 HttpMessageConverter가 사용됩니다.
RestController
xxxxxxxxxx
public 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해주는 핸들러입니다.
x
public 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 |