Programming/Spring

[Spring] @RequestBody

성일만 2015. 1. 13. 16:13

@RequestBody



POST, PUT 등 body를 읽어와야 하는경우 BufferedReader를 이용하여 받아와야 하지만,

스프링에서는 @RequestBody를 이용하여 받아올 수 있다.


이 애노테이션이 붙은 파라미터에는 HTTP 요청의 본문 body 부분이 그대로 전달된다.
AnnotationMethodHandlerAdapter에는 HttpMessageConverter 타입의 메시지 변환기message converter가 여러 개 등록되어 있다. 

@RequestBody가 붙은 파라미터가 있으면 HTTP 요청의 미디어 타입과 파라미터의 타입을 먼저 확인한다.

(servlet-context.xml 에서 <annotation-drvien> 태그 내에 선언하는 <message-converter> 에서 확인). 

메시지 변환기 중에서 해당 미디어 타입과 파라미터 타입을 처리할 수 있다면, 

HTTP 요청의 본문 부분을 통째로 변환해서 지정된 메소드 파라미터로 전달해준다.


GET 방식은 @RequestBody로 받을 수 없다.

public void selectBody(@RequestBody BoardVO vo){


}