我有一种通过以下方式注释的方法:
/**
* 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>
对象之前,因此我认为它引用此List。课程文档指出,此注释可起到以下作用:
确保结果将通过HTTP消息转换器(而不是MVC视图)写入到HTTP响应中。
还要阅读Spring的官方文档:http : //docs.spring.io/spring/docs/current/javadoc-api/org/springframework/web/bind/annotation/ResponseBody.html
似乎它带了List<Account>
物体并将它放入了Http Response
。这是正确的还是我误会了?
写入前accountSummary()
一种方法的注释中有:
访问http:// localhost:8080 / rest-ws / app / accounts时,您应该获得JSON结果
那么这到底是什么意思呢?这是否意味着List<Account>
该accountSummary()
方法返回的对象会自动转换为JSON
格式,然后放入Http Response
?中?或者是什么?
如果此声明为true,则在哪里指定对象将自动转换为JSON
格式?@ResponseBody
使用注释时是采用标准格式还是在其他地方指定?