Alternativa C - RestController
A questão aborda o uso de anotações no framework Spring, especificamente na construção de aplicações web e APIs REST. Para responder corretamente, é necessário distinguir entre anotações de controle de fluxo de requisições HTTP e anotações que definem o tipo de componente da aplicação.
Análise Detalhada
No ecossistema Spring Framework, existem anotações específicas para marcar classes como beans gerenciados pelo container. No contexto de desenvolvimento web, a diferença principal reside entre controladores tradicionais e controladores RESTful.
O Papel de Cada Anotação
| Anotação | Nível | Função Principal |
|---|
| @Controller | Classe | Define um controlador MVC tradicional, geralmente usado para retornar nomes de views (páginas HTML/JSP). |
| @RestController | Classe | Define um controlador REST. Combina @Controller + @ResponseBody, indicando que o retorno dos métodos será serializado (JSON/XML) diretamente na resposta HTTP. |
| @GetMapping / @PostMapping / @PutMapping | Método | Mapeiam verbos HTTP específicos (GET, POST, PUT) para métodos dentro de uma classe controladora já existente. |
Por que as outras alternativas estão incorretas?
- A, B e D (PutMapping, GetMapping, PostMapping): Estas são anotações de nível de método. Elas indicam qual verbo HTTP deve chamar aquele método específico, mas não transformam a classe inteira em um controlador por si sós. Sem a anotação de classe correta (como
@RestController ou @Controller), elas não funcionariam adequadamente. - E (Controller): Embora seja uma anotação de classe válida, ela é destinada ao padrão MVC tradicional (Model-View-Controller). Se usada para criar uma API REST, seria necessário adicionar manualmente a anotação
@ResponseBody em cada método para garantir que os dados sejam retornados como JSON. A anotação @RestController já faz isso automaticamente.
Conclusão
Para transformar uma classe em um controlador de serviços do tipo REST no Spring, a anotação esteriotípica correta é @RestController. Ela instrui o framework a tratar a classe como um endpoint de API, onde os objetos retornados são convertidos automaticamente para formatos de troca de dados como JSON.
Portanto, a alternativa correta é a C.