De Spring @Controller en @RestController Annotaties
1. Overzicht
In deze korte tutorial bespreken we het verschil tussen @Controller en @RestController annotaties in Spring MVC.
De eerste annotatie wordt gebruikt voor traditionele Spring-controllers en maakt al heel lang deel uit van het framework.
De @RestController annotatie is geïntroduceerd in Spring 4.0 om het maken van RESTful-webservices te vereenvoudigen. Het is een handige annotatie die combineert @Controller en @ResponseBody - waardoor de noodzaak om elke afhandelingsmethode voor verzoeken van de controllerklasse te annoteren met de @ResponseBody annotatie.
2. Veer MVC @Controller
Klassieke controllers kunnen worden geannoteerd met de @Controller annotatie. Dit is gewoon een specialisatie van de @Component class en staat toe dat implementatieklassen automatisch worden gedetecteerd via het classpath-scannen.
@Controller wordt meestal gebruikt in combinatie met een @RequestMapping annotatie die wordt gebruikt bij methoden voor het afhandelen van verzoeken.
Laten we een snel voorbeeld bekijken van de Spring MVC-controller:
@Controller @RequestMapping ("books") openbare klasse SimpleBookController {@GetMapping ("/ {id}", produce = "application / json") openbaar @ResponseBody Book getBook (@PathVariable int id) {return findBookById (id); } privéboek findBookById (int id) {// ...}}
De verzoekafhandelingsmethode is geannoteerd met @ResponseBody. Deze annotatie maakt automatische serialisering van het geretourneerde object in het HttpResponse.
3. Veer MVC @RestController
@RestController is een gespecialiseerde versie van de controller. Het bevat de @Controller en @ResponseBody annotaties en vereenvoudigt daardoor de implementatie van de controller:
@RestController @RequestMapping ("books-rest") openbare klasse SimpleBookRestController {@GetMapping ("/ {id}", produceert = "application / json") openbaar boek getBook (@PathVariable int id) {return findBookById (id); } privéboek findBookById (int id) {// ...}}
De controller is geannoteerd met de @RestController annotatie, dus de @ResponseBody is niet vereist.
Elke verzoekafhandelingsmethode van de controller-klasse serialiseert automatisch retourobjecten in HttpResponse.
4. Conclusie
In dit artikel hebben we de klassieke en gespecialiseerde REST-controllers gezien die beschikbaar zijn in het Spring Framework.
De volledige broncode voor het voorbeeld is beschikbaar in het GitHub-project; dit is een Maven-project, dus het kan worden geïmporteerd en gebruikt zoals het is.