Bilješke proljeća @Controller i @RestController

1. Pregled

U ovom ćemo brzom vodiču razgovarati o razlici između @Controller i @RestController napomene u proljetnom MVC-u.

Prva se napomena koristi za tradicionalne proljetne kontrolere i dio je okvira već jako dugo.

The @RestController napomena je uvedena u proljeće 4.0 kako bi se pojednostavilo stvaranje RESTful web usluga. To je prikladna napomena koja kombinira @Controller i @ResponseBody - što eliminira potrebu za označavanjem svake metode obrade zahtjeva klase kontrolera @ResponseBody bilješka.

2. Proljetni MVC @Controller

Klasični kontroleri mogu se označiti s @Controller bilješka. Ovo je jednostavno specijalizacija @Komponenta klase i omogućuje automatsko otkrivanje klasa implementacije kroz skeniranje staze.

@Controller se obično koristi u kombinaciji s a @RequestMapping napomena koja se koristi na načinima obrade zahtjeva.

Pogledajmo kratki primjer Spring MVC kontrolera:

@Controller @RequestMapping ("knjige") javne klase SimpleBookController {@GetMapping ("/ {id}", produce = "application / json") public @ResponseBody Book getBook (@PathVariable int id) {return findBookById (id); } privatna knjiga findBookById (int id) {// ...}} 

Način obrade zahtjeva označen je s @ResponseBody. Ova napomena omogućuje automatsku serializaciju povratnog objekta u HttpResponse.

3. Proljetni MVC @RestController

@RestController je specijalizirana verzija kontrolera. Uključuje @Controller i @ResponseBody bilješke i kao rezultat toga, pojednostavljuje implementaciju kontrolera:

@RestController @RequestMapping ("books-rest") javne klase SimpleBookRestController {@GetMapping ("/ {id}", produce = "application / json") public Book getBook (@PathVariable int id) {return findBookById (id); } privatna knjiga findBookById (int id) {// ...}} 

Kontroler je označen znakom @RestController napomena, dakle @ResponseBody nije potrebno.

Svaka metoda obrade zahtjeva klase kontrolera automatski serializira povratne objekte u HttpResponse.

4. Zaključak

U ovom smo članku vidjeli klasične i specijalizirane REST kontrolere dostupne u Spring Framework-u.

Kompletni izvorni kod za primjer dostupan je u projektu GitHub; ovo je Maven projekt, pa se može uvesti i koristiti takav kakav jest.