Sobes.tech
Junior — Middle

Quais são as principais diferenças entre as anotações @RestController e @Controller no Spring?

sobes.tech IA

Resposta da IA

A anotação @Controller é usada para definir um controlador no Spring MVC, que normalmente retorna o nome da vista para renderizar uma página HTML. Enquanto isso, @RestController é uma anotação especializada que combina @Controller e @ResponseBody. Isso significa que os métodos numa classe com @RestController retornam por padrão dados (por exemplo, JSON ou XML), e não o nome da vista.

Exemplo:

@RestController
public class MyRestController {
    @GetMapping("/data")
    public MyData getData() {
        return new MyData("value"); // Retorna JSON
    }
}

@Controller
public class MyController {
    @GetMapping("/page")
    public String getPage() {
        return "pageView"; // Retorna o nome da view para renderizar
    }
}

Assim, @RestController é útil para criar APIs REST, enquanto @Controller é usado para aplicações web com renderização no servidor.