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.


$config[zx-auto] not found$config[zx-overlay] not found