Como a anotação Spring @ResponseBody funciona neste exemplo de aplicativo RESTful?
Eu tenho um método anotado da seguinte maneira:
/**
* 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();
}
Então eu sei que por esta anotação:
@RequestMapping(value="/orders", method=RequestMethod.GET)
este identificador de métodoPEGUE Solicitações HTTP feitas para o recurso representado pela URL/ pedidos.
Este método chama um objeto DAO que retorna umLista.
OndeConta representa um usuário no sistema e possui alguns campos que representam esse usuário, algo como:
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>();
...............................
...............................
...............................
}
Minha pergunta é:Como exatamente o@ResponseBody
trabalho de anotação?
Está situado antes do retornoList<Account>
objeto, então eu acho que se refere a esta lista. A documentação do curso afirma que esta anotação serve para:
verifique se o resultado será gravado na resposta HTTP por um Conversor de Mensagens HTTP (em vez de uma Visualização MVC).
E também lendo a documentação oficial do Spring:http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/web/bind/annotation/ResponseBody.html
parece que é precisoList<Account>
objeto e coloca-o noHttp Response
. Isso está correto ou estou entendendo mal?
Escrito no comentário do anterioraccountSummary()
método existe:
Você deve obter resultados JSON ao acessarhttp: // localhost: 8080 / rest-ws / app / accounts
Então, o que exatamente isso significa? Isso significa que oList<Account>
objeto retornado peloaccountSummary()
O método é convertido automaticamente emJSON
formato e, em seguida, coloque noHttp Response
? Ou o que?
Se essa afirmação for verdadeira, onde é especificado que o objeto será automaticamente convertido emJSON
formato? O formato padrão é adotado quando o@ResponseBody
anotação é usada ou é especificada em outro lugar?