1. Prezentare generală
In acest tutorial rapid, vom discuta diferența dintre @Controller și @RestController adnotări în Spring MVC.
Prima adnotare este utilizată pentru controlerele tradiționale de primăvară și face parte din cadru de foarte mult timp.
@RestController adnotarea a fost introdus în primăvară 4.0 pentru a simplifica crearea de servicii web odihnitor. Este o adnotare de comoditate care combină @Controller și @ResponseBody - ceea ce elimină necesitatea adnotării fiecărei metode de tratare a cererilor din clasa controlerului cu adnotarea @ResponseBody .
2. Spring MVC @Controller
Controlerele clasice pot fi adnotate cu adnotarea @Controller . Aceasta este pur și simplu o specializare a clasei @Component și permite claselor de implementare să fie autodetectate prin scanarea classpath.
@Controller este de obicei utilizat în combinație cu o adnotare @RequestMapping utilizată la metodele de manipulare a cererii.
Să vedem un exemplu rapid de controler Spring MVC:
@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) { // ... } }
Metoda de gestionare a cererilor este adnotată cu @ResponseBody . Această adnotare permite serializarea automată a obiectului returnat în HttpResponse .
3. Spring MVC @RestController
@RestController este o versiune specializată a controlerului. Acesta include @Controller și @ResponseBody adnotări și , ca rezultat, simplifică implementarea controlerului:
@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) { // ... } }
Controlerul este adnotat cu adnotarea @RestController , prin urmare nu este necesar @ResponseBody .
Fiecare metodă de tratare a cererilor din clasa controlerului serializează automat obiectele returnate în HttpResponse .
4. Concluzie
În acest articol, am văzut controlerele REST clasice și specializate disponibile în Spring Framework.
Codul sursă complet pentru exemplu este disponibil în proiectul GitHub; acesta este un proiect Maven, deci poate fi importat și utilizat ca atare.