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.