A partir do código precedente, julgue o item subsecutivo, relativo a Spring.No Spring, a RestController é usada para marcar a classe como um controlador em que cada método retorna um objeto de domínio em vez de uma exibição.
CCerto
EErrado
Revelar gabarito e comentário▾
GabaritoC — Certo
Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.
Spring: a anotação @RestController
Gabarito: letra C (CERTO). A anotação @RestController no Spring é uma combinação de @Controller e @ResponseBody, e é usada para marcar uma classe como um controlador onde cada método retorna um objeto de domínio (geralmente serializado em JSON/XML) diretamente na resposta HTTP, em vez de retornar uma view (como um JSP ou Thymeleaf). Essa é a definição exata da anotação, e a afirmação da questão está correta.
O Spring Framework é um dos frameworks mais utilizados para desenvolvimento de aplicações Java, especialmente para aplicações web e microsserviços. Ele fornece uma série de anotações para facilitar o desenvolvimento, e @RestController é uma das mais importantes para construir APIs REST. Para entender por que a afirmação está correta, é preciso compreender a diferença entre @Controller e @RestController.
Um @Controller é uma anotação do Spring MVC que marca uma classe como um controlador. Os métodos dessa classe podem retornar o nome de uma view (como um arquivo JSP ou um template Thymeleaf), que será resolvido por um ViewResolver para gerar a resposta HTML. Para retornar dados diretamente (como JSON), é necessário anotar o método com @ResponseBody, que indica que o valor de retorno deve ser serializado e escrito diretamente no corpo da resposta HTTP.
A anotação @RestController foi introduzida no Spring 4.0 para simplificar a criação de APIs REST. Ela é uma anotação composta, ou seja, é meta-anotada com @Controller e @ResponseBody. Isso significa que, ao usar @RestController, todos os métodos da classe já são tratados como se tivessem @ResponseBody, eliminando a necessidade de anotar cada método individualmente. Portanto, cada método retorna um objeto de domínio que é automaticamente serializado (geralmente para JSON) e enviado na resposta.
Na prática, considere um exemplo simples:
@RestController
public class UsuarioController {
@GetMapping("/usuario")
public Usuario getUsuario() {
return new Usuario("João", 30);
}
}
Nesse caso, quando uma requisição GET é feita para /usuario, o Spring irá chamar o método getUsuario(), que retorna um objeto Usuario. Como a classe está anotada com @RestController, o Spring automaticamente serializa esse objeto para JSON e o envia como resposta, com o Content-Type apropriado (application/json). Se a classe fosse anotada apenas com @Controller, o Spring tentaria interpretar o retorno como o nome de uma view, o que causaria um erro, a menos que o método também fosse anotado com @ResponseBody.
A distinção entre @Controller e @RestController é um dos pontos mais cobrados em provas sobre Spring. A pegadinha clássica é afirmar que @RestController é usada para retornar views, ou que @Controller já retorna objetos de domínio diretamente. A questão em análise explora exatamente essa distinção, e a afirmação está correta ao dizer que @RestController é usada para marcar a classe como um controlador em que cada método retorna um objeto de domínio em vez de uma exibição.
Guarde essa fronteira: @Controller retorna views (a menos que combinado com @ResponseBody), enquanto @RestController retorna objetos de domínio diretamente. É exatamente nessa distinção que a questão se baseia.
@RestController (Spring 4.0+): Anotação composta (@Controller, @ResponseBody); Retorno dos métodos (Objeto de domínio, Serializado (JSON/XML), Direto no corpo da resposta); Uso (APIs REST, Sem ViewResolver); Contraste (@Controller → retorna view, @Controller + @ResponseBody → objeto)
Alternativa C — ✅ Correto ⟵ GABARITO
A afirmação está correta. A anotação @RestController é uma anotação composta que combina @Controller e @ResponseBody. Isso significa que, ao marcar uma classe com @RestController, todos os métodos dessa classe retornam objetos de domínio que são serializados diretamente na resposta HTTP, em vez de retornar o nome de uma view. Essa é a definição padrão da anotação no Spring Framework, e a questão a descreve com precisão.
Spring Framework (documentação oficial):
@RestController é uma anotação de conveniência que combina @Controller e @ResponseBody, indicando que cada método retorna um objeto de domínio em vez de uma view.
A alternativa está correta porque descreve exatamente o propósito da anotação. Não há nenhum erro conceitual na afirmação.