消息转换提供了一种更为直接的方式,它能够将控制器产生的数据转换为服务于客户端的表述形式,当使用消息转换功能时,DispatcherServlet不再需要那么麻烦地将模型数据传到视图中。实际上,这里根本没有模型,没有视图,只有控制器产生的数据,以及消息转换器转换数据之后所产生的资源表述。
在响应体中返回资源状态
@RequestMapping(method = RequestMethod.GET,produces="application/json")
public @ResponseBody List<<Spittle>> spittles(
@RequestParam(value="max",defaultValue="20") int count){
return spittleRespository(count);
}
@ResponseBody注解会告知Spring,我们将要返回的对象作为资源发送给客户端,并将其转换为客户端可接受的表述形式。更具体的讲,DispatcherServlet将会考虑到请求中Accept头部信息,并查找能够为客户端提供所需表述形式的消息转换器(Java对象->客户端资源表述)。(参见《Spring实战》P437)
当处理请求时,@ResponseBody与@RequestBody是启用消息转换的一种简洁强大方式,但是,编写的控制器有多个方法,并且每个方法都需要信息转换功能的话,那么这些注解就会带来一定程度的重复性。
Spring4.0引入了@RestController注解。使用@RestController注解代替@Controller的话,Spring将会为该控制器的所有处理方法应用消息转换功能。不必为每个方法都添加@RequestBody了。