1. Översikt
I denna snabba handledning diskuterar vi skillnaden mellan @Controller och @RestController- anteckningar i Spring MVC.
Den första anteckningen används för traditionella vårkontroller och har varit en del av ramverket under mycket lång tid.
Den @RestController anteckning infördes i Spring 4.0 för att förenkla skapandet av RESTful webbtjänster. Det är en bekvämlighetsnotering som kombinerar @Controller och @ResponseBody - vilket eliminerar behovet av att kommentera varje begäranhanteringsmetod i styrklassen med @ResponseBody- kommentaren.
2. Fjäder MVC @ Controller
Klassiska styrenheter kan antecknas med @Controller- anteckningen. Detta är helt enkelt en specialisering av klassen @ Component och gör det möjligt att automatiskt upptäcka implementeringsklasser genom klassvägsskanning.
@Controller används vanligtvis i kombination med en @RequestMapping- kommentar som används vid förfarandeshanteringsmetoder.
Låt oss se ett snabbt exempel på vår MVC-styrenhet:
@Controller @RequestMapping("books") public class SimpleBookController { @GetMapping("/{id}", produces = "application/json") public @ResponseBody Book getBook(@PathVariable int id) { return findBookById(id); } private Book findBookById(int id) { // ... } }
Metoden för begäranhantering kommenteras med @ResponseBody . Denna kommentar möjliggör automatisk serialisering av returobjektet till HttpResponse .
3. Spring MVC @ RestController
@RestController är en specialversion av styrenheten. Den innehåller @Controller- och @ResponseBody- anteckningarna och förenklar därför implementeringen av controller:
@RestController @RequestMapping("books-rest") public class SimpleBookRestController { @GetMapping("/{id}", produces = "application/json") public Book getBook(@PathVariable int id) { return findBookById(id); } private Book findBookById(int id) { // ... } }
Styrenheten är antecknad med @RestController- anteckningen, därför krävs inte @ResponseBody .
Varje begäran hanteringsmetod i styrklassen serierar automatiskt returobjekt i HttpResponse .
4. Slutsats
I den här artikeln såg vi de klassiska och specialiserade REST-styrenheterna som finns tillgängliga i Spring Framework.
Den fullständiga källkoden för exemplet finns i GitHub-projektet; detta är ett Maven-projekt, så det kan importeras och användas som det är.