ความแตกต่างระหว่างการเพิ่มความคิดเห็น @GetMapping และ @RequestMapping (method = RequestMethod.GET)


152

ความแตกต่างระหว่าง@GetMappingและ@RequestMapping(method = RequestMethod.GET)คืออะไร
ฉันเคยเห็นในตัวอย่าง Spring Reactive ซึ่ง @GetMappingใช้แทน@RequestMapping

คำตอบ:


195

@GetMapping@RequestMapping(method = RequestMethod.GET)เป็นคำอธิบายประกอบแต่งที่ทำหน้าที่เป็นทางลัดสำหรับ

@GetMappingเป็นบันทึกย่อที่ใหม่กว่า รองรับการสิ้นเปลือง

ตัวเลือกบริโภคคือ:

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

ดูรายละเอียดเพิ่มเติมได้ที่: GetMapping Annotation

หรืออ่าน: ขอตัวแปรการแมป

RequestMapping รองรับการใช้งานเช่นกัน

GetMapping เราสามารถใช้เฉพาะกับวิธีการระดับและหมายเหตุประกอบ RequestMapping เราสามารถใช้ในระดับชั้นเรียนและเช่นเดียวกับในระดับวิธี



3
RequestMapping รองรับการใช้เช่นกัน: docs.spring.io/spring/docs/current/javadoc-api/org/…
Gábor DANI

22

คุณสามารถดูได้ที่นี่ :

โดยเฉพาะเป็นคำอธิบายประกอบแต่งที่ทำหน้าที่เป็นทางลัดสำหรับ@GetMapping@RequestMapping(method = RequestMethod.GET)

ความแตกต่างระหว่าง@GetMapping&@RequestMapping

@GetMappingสนับสนุนแอตทริบิวต์เช่นconsumes @RequestMapping


14
ข่าวดี! ตั้งแต่ 4/2017 บนหน้าเว็บ Spring ที่คุณเชื่อมโยงไปตอนนี้GetMapping จะสนับสนุน 'สิ้นเปลือง' และแอตทริบิวต์ RequestMapping ตามปกติ น่าจะเป็นสปริงที่เพิ่มสิ่งเหล่านั้นหลังจากโพสต์
devdanke

10

@RequestMapping เป็นระดับชั้นเรียน

@GetMapping เป็นวิธีการระดับ

พร้อมสปริงวิ่ง 4.3 และสิ่งต่าง ๆ ก็เปลี่ยนไป ตอนนี้คุณสามารถใช้ @GetMapping บนวิธีการที่จะจัดการกับคำขอ http ข้อมูลจำเพาะ @RequestMapping ระดับคลาสนั้นได้รับการปรับปรุงด้วยคำอธิบายประกอบ (@ ระดับวิธีการ) @GetMapping

นี่คือตัวอย่าง:

@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";
}
}

ก่อนฤดูใบไม้ผลิ 4.3 มันเป็น @RequestMapping(method=RequestMethod.GET)

อ่านเพิ่มเติมจากหนังสือที่เขียนโดย Craig Walls อ่านเพิ่มเติมจากหนังสือที่เขียนโดย Craig Walls


1
@RequestMapping สามารถใช้กับเมธอดได้
ZhaoGang

ใช่มันสามารถ อย่างไรก็ตาม @GetMapping มีความกระชับและเจาะจงเฉพาะกับวิธี HTTP ที่เป็นเป้าหมาย
Zee

3

คำตอบสั้น ๆ :

ไม่มีความแตกต่างในความหมาย

โดยเฉพาะ @GetMapping เป็นคำอธิบายประกอบที่ทำหน้าที่เป็นทางลัดสำหรับ @RequestMapping (method = RequestMethod.GET)

อ่านเพิ่มเติม:

RequestMapping สามารถใช้ในระดับชั้นเรียน:

คำอธิบายประกอบนี้สามารถใช้ได้ทั้งที่คลาสและที่ระดับเมธอด ในกรณีส่วนใหญ่ที่แอปพลิเคชันระดับเมธอดจะต้องการใช้หนึ่งในตัวแปรเฉพาะของเมธอด HTTP @GetMapping, @PostMapping, @PutMapping, @DeleteMapping หรือ @PatchMapping

ในขณะที่GetMappingใช้กับวิธีการเท่านั้น:

คำอธิบายประกอบสำหรับการจับคู่คำขอ HTTP GET ไปยังวิธีการจัดการที่เฉพาะเจาะจง


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

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.