Naslovna » Java Web programiranje » Spring @Controller i @RestController anotacije

Spring @Controller i @RestController anotacije

Java Web programiranje Java Java apliakcije Java programiranje osnove programiranja veb aplikacije veb programiranje web aplikacije web programiranje
restcontroller

Kada razvijamo veb aplikaciju koristeći Spring Framework, možemo da koristimo dve anotacije za kreiranje kontrolera: @Controller i @RestController. Glavna razlika je u tome kako obrađuju zahteve od klijenta i kada se koriste.

Spring MVC @Controller

Anotaciju @Controller koristimo za kreiranje klasičnih Spring MVC kontrolera.  Predstavlja specijalizaciju @Component klase koja nam omogućava automatsku detekciju implementiranih klasa pri skeniranju classpath-a.

@Controller
@RequestMapping("books")
public class SimpleBookController {
@GetMapping(value="/{id}", produces = "application/json")
public @ResponseBody Book getBook(@PathVariable int id) {
return findBookById(id);
}
private Book findBookById(int id) {
// ...
}
}

Anotacija @ResponseBody je stavljena kako bi se izvršila automatska serijalizacija povratnog objekta u HTTP odgovor. Ukoliko izbacimo @ResponseBody anotaciju, podrazumeva se da se vraća ime pogleda, a ne telo HTTP odgovora.

Spring MVC @RestController

@RestController je specifičan tip kontrolera koji se koristi pri izradi RESTful veb servisa. Ova anotacija uključuje @Controller i @ResponseBody anotacije. Pogodan je kada želimo direktno da vratimo podatke bez potrebe za pogledima.

@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) {
// ...
}
}

Svaka handler metoda u kontroleru autmatski serijalizuje povratni objekat u HTTP odgovor.