Perbedaan antara anotasi @GetMapping dan @RequestMapping (method = RequestMethod.GET)

152

Apa perbedaan antara @GetMappingdan @RequestMapping(method = RequestMethod.GET)?
Saya telah melihat dalam beberapa contoh Spring Reactive, yang @GetMappingdigunakan sebagai ganti@RequestMapping

nowszy94
sumber

Jawaban:

195

@GetMappingadalah anotasi tersusun yang bertindak sebagai pintasan untuk @RequestMapping(method = RequestMethod.GET).

@GetMappingadalah anotasi yang lebih baru. Ini mendukung konsumsi

Opsi konsumsi adalah:

consumes = "text / plain"
consumes = {"text / plain", "application / *"}

Untuk perincian lebih lanjut lihat: GetMapping Annotation

atau baca: minta varian pemetaan

Dukungan RequestMapping juga mengkonsumsi

GetMapping kita dapat menerapkan hanya pada level metode dan anotasi RequestMapping kita dapat menerapkan pada level kelas dan juga pada level metode

dhS
sumber
3
Dukungan RequestMapping juga mengkonsumsi: docs.spring.io/spring/docs/current/javadoc-api/org/…
Gábor DANI
22

Seperti yang Anda lihat di sini :

Secara khusus, @GetMappingadalah anotasi terdiri yang bertindak sebagai jalan pintas untuk @RequestMapping(method = RequestMethod.GET).

Perbedaan antara @GetMapping&@RequestMapping

@GetMappingmendukung consumesatribut like @RequestMapping.

Deroude
sumber
14
Kabar baik! Pada 4/2017, pada halaman web musim semi Anda terkait dengan, GetMapping tidak sekarang mendukung 'mengkonsumsi' dan atribut RequestMapping biasa. Mungkin Spring menambahkannya setelah posting Anda.
devdanke
10

@RequestMapping adalah tingkat kelas

@GetMapping adalah tingkat metode

Dengan sprint Spring 4.3. dan semuanya telah berubah. Sekarang Anda dapat menggunakan @GetMapping pada metode yang akan menangani permintaan http. Spesifikasi @RequestMapping tingkat-kelas disempurnakan dengan anotasi (level-metode) @GetMapping

Berikut ini sebuah contoh:

@Slf4j
@Controller
@RequestMapping("/orders")/* The @Request-Mapping annotation, when applied
                            at the class level, specifies the kind of requests 
                            that this controller handles*/  

public class OrderController {

@GetMapping("/current")/*@GetMapping paired with the classlevel
                        @RequestMapping, specifies that when an 
                        HTTP GET request is received for /order, 
                        orderForm() will be called to handle the request..*/

public String orderForm(Model model) {

model.addAttribute("order", new Order());

return "orderForm";
}
}

Sebelum Spring 4.3, itu @RequestMapping(method=RequestMethod.GET)

Bacaan ekstra dari buku yang ditulis oleh Craig Walls Bacaan ekstra dari buku yang ditulis oleh Craig Walls

zee
sumber
1
@RequestMapping juga dapat diterapkan ke metode.
ZhaoGang
Ya bisa. Namun, @GetMapping lebih ringkas dan spesifik untuk metode HTTP yang ditargetkan.
Zee
3

Jawaban singkat:

Tidak ada perbedaan dalam semantik.

Secara khusus, @GetMapping adalah anotasi tersusun yang bertindak sebagai pintasan untuk @RequestMapping (metode = RequestMethod.GET).

Bacaan lebih lanjut:

RequestMapping dapat digunakan di tingkat kelas:

Anotasi ini dapat digunakan baik di kelas dan di tingkat metode. Dalam sebagian besar kasus, pada level metode aplikasi akan lebih suka menggunakan salah satu varian khusus metode HTTP @GetMapping, @PostMapping, @PutMapping, @DeleteMapping, atau @PatchMapping.

sementara GetMappinghanya berlaku untuk metode:

Anotasi untuk memetakan permintaan HTTP GET ke metode penangan tertentu.


https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/web/bind/annotation/GetMapping.html

https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/web/bind/annotation/RequestMapping.html

ZhaoGang
sumber