我的 Controller 中有一个简单的处理程序,它返回一条消息
@RequestMapping(value = "/message")
@ResponseBody
public Message get() {
return new Message(penguinCounter.incrementAndGet() + " penguin!");
}
同时我可以使用这样的东西
@RequestMapping(value = "/message")
ResponseEntity<Message> get() {
Message message = new Message(penguinCounter.incrementAndGet() + " penguin!");
return new ResponseEntity<Message>(message, HttpStatus.OK);
}
这两种方法有什么区别?让我们不要考虑 HttpStatus :)
最佳答案
ResponseEntity 将在定义任意 HTTP 响应 header 时为您提供一些额外的灵 active 。在这里查看第四个构造函数:
http://docs.spring.io/spring/docs/3.0.x/api/org/springframework/http/ResponseEntity.html
ResponseEntity(T body, MultiValueMap<String,String> headers, HttpStatus statusCode)
此处提供了可能的 HTTP 响应 header 列表:
http://en.wikipedia.org/wiki/List_of_HTTP_header_fields#Responses
一些常用的有Status、Content-Type和Cache-Control。
如果不需要,使用@ResponseBody 会更简洁一些。
关于java - ResponseEntity<T> 和@ResponseBody 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22725143/