У меня есть метод, который аннотируется следующим образом:
/**
* 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)
этот метод обрабатывает запросы GET HTTP к ресурсу, представленному URL / orders .
Этот метод вызывает объект 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 конвертером сообщений HTTP (вместо представления MVC).
А также прочтите официальную документацию Spring: http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/web/bind/annotation/ResponseBody.html
кажется, что он берет List<Account>
объект и помещает его в Http Response
. Это правильно или я неправильно понимаю?
В комментарии к предыдущему accountSummary()
способу записано :
Вы должны получить результаты JSON при доступе к http: // localhost: 8080 / rest-ws / app / accounts.
Так что именно это означает? Означает ли это, что List<Account>
объект, возвращаемый accountSummary()
методом, автоматически преобразуется в JSON
формат, а затем помещается в формат Http Response
? Или что?
Если это утверждение верно, где указано, что объект будет автоматически преобразован в JSON
формат? @ResponseBody
Применяется ли стандартный формат при использовании аннотации или он указывается где-то еще?