The Spring @Controller dan @RestController Annotations

1. Gambaran keseluruhan

Dalam tutorial ringkas ini, kita akan membincangkan perbezaan antara anotasi @Controller dan @RestController di Spring MVC.

Anotasi pertama digunakan untuk pengawal Spring tradisional dan telah menjadi sebahagian daripada kerangka untuk waktu yang sangat lama.

The @RestController anotasi diperkenalkan pada Spring 4.0 untuk memudahkan penciptaan perkhidmatan web RESTful. Ini adalah anotasi kemudahan yang menggabungkan @Controller dan @ResponseBody - yang menghilangkan keperluan untuk memberi penjelasan untuk setiap kaedah pengendalian permintaan kelas pengawal dengan anotasi @ResponseBody .

2. Spring MVC @Controller

Pengawal klasik boleh diberi penjelasan dengan anotasi @Controller . Ini hanyalah pengkhususan kelas @Component dan membolehkan kelas pelaksanaan dikesan secara automatik melalui pengimbasan classpath.

@Controller biasanya digunakan dalam kombinasi dengan anotasi @RequestMapping yang digunakan pada kaedah pengendalian permintaan.

Mari lihat contoh ringkas pengawal 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) { // ... } } 

Kaedah pengendalian permintaan diberi penjelasan dengan @ResponseBody . Anotasi ini membolehkan penyirian automatik objek kembali ke HttpResponse .

3. Spring MVC @RestController

@RestController adalah versi khas pengawal. Ini merangkumi anotasi @Controller dan @ResponseBody dan hasilnya, memudahkan pelaksanaan pengawal:

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

Pengawal diberi penjelasan dengan anotasi @RestController , oleh itu @ResponseBody tidak diperlukan.

Setiap kaedah pengendalian permintaan kelas pengawal secara automatik menyusun objek yang dikembalikan ke HttpResponse .

4. Kesimpulan

Dalam artikel ini, kami melihat pengawal REST klasik dan khusus tersedia dalam Spring Framework.

Kod sumber lengkap untuk contoh boleh didapati dalam projek GitHub; ini adalah projek Maven, sehingga dapat diimport dan digunakan sebagaimana adanya.