Kommentarer om Spring @Controller og @RestController

1. Oversigt

I denne hurtige vejledning diskuterer vi forskellen mellem @Kontrol og @RestController annoteringer i Spring MVC.

Den første kommentar bruges til traditionelle Spring-controllere og har været en del af rammen i meget lang tid.

Det @RestController annotering blev introduceret i foråret 4.0 for at forenkle oprettelsen af ​​RESTful webtjenester. Det er en komfortkommentar, der kombinerer @Kontrol og @ResponseBody - hvilket eliminerer behovet for at kommentere hver anmodningshåndteringsmetode i controllerklassen med @ResponseBody kommentar.

2. MVC forår @Kontrol

Klassiske controllere kan kommenteres med @Kontrol kommentar. Dette er simpelthen en specialisering af @Komponent klasse og tillader, at implementeringsklasser autodetekteres gennem klassesti-scanning.

@Kontrol bruges typisk i kombination med en @RequestMapping annotering brugt på anmodningshåndteringsmetoder.

Lad os se et hurtigt eksempel på Spring MVC-controller:

@Controller @RequestMapping ("bøger") offentlig klasse SimpleBookController {@GetMapping ("/ {id}", producerer = "applikation / json") offentlig @ResponseBody Book getBook (@PathVariable int id) {return findBookById (id); } privat bog findBookById (int id) {// ...}} 

Metoden til anmodningshåndtering er kommenteret med @ResponseBody. Denne kommentar muliggør automatisk serialisering af returobjektet i HttpResponse.

3. Forår MVC @RestController

@RestController er en specialversion af controlleren. Det inkluderer @Kontrol og @ResponseBody annoteringer og som et resultat forenkler controllerens implementering:

@RestController @RequestMapping ("books-rest") offentlig klasse SimpleBookRestController {@GetMapping ("/ {id}", producerer = "applikation / json") offentlig Book getBook (@PathVariable int id) {return findBookById (id); } privat bog findBookById (int id) {// ...}} 

Controlleren er kommenteret med @RestController anmærkning, derfor @ResponseBody er ikke påkrævet.

Hver anmodningshåndteringsmetode i controller-klassen serierer automatisk returnerede objekter i HttpResponse.

4. Konklusion

I denne artikel så vi de klassiske og specialiserede REST-controllere, der var tilgængelige i Spring Framework.

Den komplette kildekode til eksemplet er tilgængelig i GitHub-projektet; dette er et Maven-projekt, så det kan importeres og bruges som det er.