我有一个以下列方式注释的方法:
/**
* Provide a list of all accounts.
*/
// TODO 02: Complete this method. Add annotations to respond
// to GET /accounts and return a List 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 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 beneficiaries = new HashSet();
...............................
...............................
...............................
}
我的问题是:@ResponseBody注释的工作原理是什么?
它位于返回的List< Account>之前.对象所以我认为它指的是这个List.课程文档指出此注释用于以下功能:
ensure that the result will be written to the HTTP response by an HTTP
Message Converter (instead of an MVC View).
它似乎需要List< Account>对象并将其放入Http响应中.这是正确的还是我误解了?
写入以前的accountSummary()方法的注释中有:
You should get JSON results when accessing
07001
那究竟是什么意思呢?这是否意味着列表 accountSummary()方法返回的对象会自动转换为JSON格式,然后放入Http Response中吗?或者是什么?
如果此断言为真,那么它在何处指定该对象将自动转换为JSON格式?使用@ResponseBody注释时是采用标准格式还是在其他地方指定?