Kommentarer från Spring @ Controller och @ RestController

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.