Anotasi @Controller Spring dan @RestController

1. Ikhtisar

Dalam tutorial ini cepat, kita akan membahas perbedaan antara @Controller dan @RestController penjelasan di Spring MVC.

Anotasi pertama digunakan untuk pengontrol Pegas tradisional dan telah menjadi bagian dari kerangka kerja untuk waktu yang sangat lama.

The @RestController penjelasan diperkenalkan di Spring 4.0 untuk menyederhanakan penciptaan layanan web tenang. Ini adalah anotasi praktis yang menggabungkan @Controller dan @ResponseBody - yang menghilangkan kebutuhan untuk menganotasi setiap metode penanganan permintaan kelas pengontrol dengan anotasi @ResponseBody .

2. Pegas MVC @Controller

Pengontrol klasik dapat dianotasi dengan anotasi @Controller . Ini hanyalah spesialisasi dari kelas @Component dan memungkinkan kelas implementasi untuk dideteksi secara otomatis melalui pemindaian jalur kelas.

@Controller biasanya digunakan dalam kombinasi dengan anotasi @RequestMapping yang digunakan pada metode penanganan permintaan.

Mari kita lihat contoh cepat pengontrol MVC Spring:

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

Metode penanganan permintaan dianotasi dengan @ResponseBody . Anotasi ini memungkinkan serialisasi otomatis dari objek yang dikembalikan ke HttpResponse .

3. Pegas MVC @RestController

@RestController adalah versi khusus dari pengontrol. Ini mencakup @Controller dan @ResponseBody penjelasan dan sebagai hasilnya, menyederhanakan pelaksanaan controller:

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

Pengontrol dianotasi dengan anotasi @RestController , oleh karena itu @ResponseBody tidak diperlukan.

Setiap metode penanganan permintaan dari kelas pengontrol secara otomatis membuat serial objek yang dikembalikan ke HttpResponse .

4. Kesimpulan

Di artikel ini, kami melihat pengontrol REST klasik dan khusus yang tersedia di Spring Framework.

Kode sumber lengkap untuk contoh ini tersedia di proyek GitHub; ini adalah proyek Maven, sehingga dapat diimpor dan digunakan sebagaimana adanya.