흐음... 요즘은.. 서비스가 하나의 형태로 나타나지 않는다. 똑같은 데이터를 가지고 이런서비스 저런 서비스에서 똑같이 사용할 수 있단 말이지.
방법이야 게이트단에서 각 단에 맞게 보내주면되긴하다. 

스프링에서도 제공하는기술이 데이터 를 XML이나 JSON 형태로 주고 받을 수 있다. 그거지. 많은 추가 작업없이 가능하다.
예로 .htm 으로 호출하면 html이 오고 .json 으로 호출하면 그 결과가 json으로 오면된다. 주로 키맵의 리턴이 되는 형태 (여러 서비스들간의 통신에서?)
로 주고 받을 수 있다는거다.

@RequestBody 와 @ResponseBody 어노테이션은 각각 HTTP 요청 몸체를 자바 객체로 변환하고 자바 객체를 HTTP 응답 몸체로 변환해주는데 사용된다. 

@RequestBody 어노테이션을 이용하면 HTTP 요청 몸체를 자바 객체로 전달받을 수 있다.
@ResponseBody 어노테이션을 이용하면 자바 객체를 HTTP 응답 몸체로 전송할 수 있다. 

@RequestMapping( method = RequestMethod.POST)
@ResponseBody
public String simpleTest(@RequestBody String body) {
return body;
}

@RequestBody 어노테이션은 @RequestMapping에 의해 POST 방식으로 전송된 HTTP 요청 데이터를 String 타입의 body 파라미터로 전달한다.
@ResponseBody 어노테이션은 @RequestMapping 메서드에 적용되면 해당 메소드의 리턴값을 HTTP 응답데이터로 사용한다.

위의 경우 리턴값이 String 이므로 String 데이터를 HTTP 응답 데이터로 전송한다.

응답데이터.. 결과는 아래처럼 간다...
만약 폼에 값들이 들어있었다면

name=John&age=22

위의 경우 요청 몸체 데이터를 body 파라미터에 전달받고 있으며, body 파라미터를 그대로 결과값으로 리턴한다.
그런데 @ResponseBody 어노테이션이 적용되어 있어서 .. HTTP 요청데이터가 그대로 응답데이터로 간다.

해서 html... 웹브라우저 뷰에 

name=John&age=22

나올것이다.

이런것을.. 스프링MVC는 HttpMessageConverter를 이용해서 자바객체와 HTTP 요청/응답 몸체 사이의 변환을 처리한다.



HttpMessageConverter를 이용한 처리

AnnotationMethodHandlerAdapter 클래스는 @RequestBody 어노테이션이 적용된 파라미터나 @ResponseBody 어노테이션이 적용된 메소드에 대해 HttpMessageConverter 를 사용해서 변환처리한다. (정확히는 HttpMessageConveter의 구현클래스를 사용)

이 HttpMessageConverter를 구현한 몇가지 클래스들이 있다.
ByteArrayHttpMessageConveter 등.. 찾아봐라

만약 다른 messageConverter를 사용하겠다면 명시적 정의 가가능하다. (아래처럼...)
<bean
class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
<property name="cacheSeconds" value="0" />
<property name="alwaysUseFullPath" value="true" />
<property name="webBindingInitializer">
<bean class="madvirus.spring.chap06.binder.CustomWebBindingInitializer" />
</property>
<property name="messageConverters">
<list>
<ref bean="byteArrayHttpMessageConverter" />
<ref bean="stringHttpMessageConverter" />
<ref bean="formHttpMessageConverter" />
<ref bean="sourceHttpMessageConverter" />
<ref bean="marshallingHttpMessageConverter" />
<ref bean="jsonHttpMessageConverter" />
</list>
</property>
</bean>


출처 - http://ezsnote.tistory.com/entry/RequestBody-ResponseBody




'Framework & Platform > Spring' 카테고리의 다른 글

spring - @Autowired  (0) 2012.05.24
Spring - MyBatis + 커넥션풀 + 트랜잭션  (0) 2012.05.24
Spring - Expression Language와 @Value  (0) 2012.05.24
spring - 메소드 파라미터  (0) 2012.05.24
spring - cookie 설정  (0) 2012.05.24
Posted by linuxism
,