当前位置: 首页 > 知识库问答 >
问题:

Spring@ResponseBody注释是如何工作的?

谭富
2023-03-14
/**
* Provide a list of all accounts.
*/
//  TODO 02: Complete this method.  Add annotations to respond
//  to GET /accounts and return a List<Account> to be converted.
//  Save your work and restart the server.  You should get JSON results when accessing 
//  http://localhost:8080/rest-ws/app/accounts
@RequestMapping(value="/orders", method=RequestMethod.GET)
public @ResponseBody List<Account> accountSummary() {
    return accountManager.getAllAccounts();
}

所以我知道通过这个注释:

@RequestMapping(value="/orders", method=RequestMethod.GET)

此方法处理对URL/Orders表示的资源发出的GET HTTP请求。

此方法调用返回列表的DAO对象。

public class Account {

    @Id
    @Column(name = "ID")
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    private Long entityId;

    @Column(name = "NUMBER")
    private String number;

    @Column(name = "NAME")
    private String name;

    @OneToMany(cascade=CascadeType.ALL)
    @JoinColumn(name = "ACCOUNT_ID")
    private Set<Beneficiary> beneficiaries = new HashSet<Beneficiary>();

    ...............................
    ...............................
    ...............................
}

确保结果将由HTTP消息转换器(而不是MVC视图)写入HTTP响应。

也可以阅读Spring官方文档:http://docs.Spring.io/Spring/docs/current/javadoc-api/org/springframework/web/bind/annotation/responsebody.html

它似乎接受列表 对象,并将其放入HTTP响应中。这是正确的还是我误会了?

写到前面的accountsummary()方法的注释中有:

访问http://localhost:8080/rest-ws/app/accounts时应该会得到JSON结果

那么这到底是什么意思呢?是否意味着AccountSummary()方法返回的List 对象自动转换为JSON格式,然后放入HTTP响应中?或者怎样?

如果这个断言为真,哪里指定对象将自动转换为JSON格式?使用@responsebody注释时采用的是标准格式,还是在其他地方指定的?

共有1个答案

李辉
2023-03-14

首先,注释不注释list。它对方法进行注释,就像requestmapping所做的那样。您的代码相当于

@RequestMapping(value="/orders", method=RequestMethod.GET)
@ResponseBody
public List<Account> accountSummary() {
    return accountManager.getAllAccounts();
}

现在注释的意思是方法的返回值将构成HTTP响应的主体。当然,HTTP响应不能包含Java对象。因此这个帐户列表被转换为适合REST应用程序的格式,通常是JSON或XML。

格式的选择取决于安装的消息转换器、@requestmapping批注的product属性的值以及客户端接受的内容类型(在HTTP请求头中可用)。例如,如果请求说它接受XML,但不接受JSON,并且安装了一个可以将列表转换为XML的消息转换器,那么将返回XML。

 类似资料:
  • 问题内容: 我有一种通过以下方式注释的方法: 所以我知道这个注释: 此方法处理对由URL / orders* 表示的资源发出的 GET HTTP请求。 * 此方法调用返回 List 的DAO对象。 其中 Account 代表系统上的用户,并具有代表该用户的某些字段,例如: 我的问题是: 批注 到底如何工作? 它位于返回的对象之前,因此我认为它引用了此List。课程文档指出,此注释可用于: 确保结果

  • 有人能解释一下Spring3中的和注释吗?它们是干什么用的?任何例子都很好。

  • 我在玩和 这是我的应用程序上下文文件 以下是我的Java类 HelloWorld1。JAVA 住址JAVA 这里是我尝试运行东西的地方-应用程序。JAVA 我一直在得到这个异常-理想情况下我不应该,因为我已经定义了id为'address1'的@Qualifier注释-所以它不应该抛出异常 警告:上下文初始化过程中遇到的异常-取消刷新尝试:org.springframework.beans.fact

  • 我的spring应用程序有点小问题。下面是我的代码: (存储库) 下面是我的简单服务类: 更新:配置

  • 问题内容: 我不喜欢抽象,但 我认为Spring犯了重罪。 但是,如果有人可以解释“自动”配置背后的算法,那么我这次愿意忽略它。 看看spring自己的javadocs,除了说它将智能地猜测您需要的东西以及对条件bean要做的事情之外,它没有什么其他的。 有人知道用于确定需要加载哪些算法的算法吗? 问题答案: 根据我作为Spring Boot用户的经验,Spring Boot决定要启用哪些自动配置