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

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



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.


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


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

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.