java - ResponseEntity<T> 和@ResponseBody 有什么区别?

标签 java spring spring-mvc

我的 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

一些常用的有St​​atus、Content-Type和Cache-Control。

如果不需要,使用@ResponseBody 会更简洁一些。

关于java - ResponseEntity<T> 和@ResponseBody 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22725143/

相关文章:

java - 我可以使用哪个 Java 集合?

java - 让我的字典搜索更有效率

java - FlushMode AUTO 不适用于 JPA 和 Hibernate

java - @Value 注解未解析

java - Java 的值传递是否意味着我的类不需要 deepCopy 函数?

java - 对象数组就像 Ajax 中的 String 到 Spring Controller 一样

java - 我收到 BeanFactory 错误 : NoSuchBeanDefinitionException and I can't figure out how to solve it

javascript - 使用 Spring MVC 在 javascript 文件中使用 EL 变量

当我尝试向客户添加另一个产品时发生 java.lang.StackOverflowError

json - 如何在 Spring 中包装 JSON 响应