У мене є метод, який анотований наступним чином:
/**
* 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-адресою / замовленнями .
Цей метод викликає об'єкт DAO, який повертає List .
де Обліковий запис представляє користувача в системі і має деякі поля, що представляють цього користувача, приблизно так:
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).
А також читання офіційної весняної документації: 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
анотація, чи він вказаний деінде?