Spring @ResponseBody 注释如何工作?
我有一个按以下方式注释的方法:
/**
* 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 请求。
此方法调用返回 List 的 DAO 对象。
其中,Account 表示系统上的用户,并具有一些表示此用户的字段,如下所示:
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>();
...............................
...............................
...............................
}
我的问题是:@ResponseBody
注释究竟是如何工作的?
它位于返回对象之前,因此我认为它引用了此列表。课程文档指出,此注释的功能是:List<Account>
确保结果将通过 HTTP 消息转换器(而不是 MVC 视图)写入 HTTP 响应。
它似乎将对象放入.这是正确的还是我误解了?List<Account>
Http Response
写在前面方法的注释中有:accountSummary()
访问 http://localhost:8080/rest-ws/app/accounts 时,您应该会得到 JSON 结果
那么这到底是什么意思呢?这是否意味着该方法返回的对象会自动转换为格式,然后放入 ?还是什么?List<Account>
accountSummary()
JSON
Http Response
如果此断言为 true,则在何处指定对象将自动转换为格式?标准格式是在使用注释时采用的,还是在其他地方指定的?JSON
@ResponseBody