Sự khác biệt giữa các chú thích @GetMapping và @RequestMapping (phương thức = RequestMethod.GET)


151

Sự khác biệt giữa @GetMappingvà là @RequestMapping(method = RequestMethod.GET)gì?
Tôi đã thấy trong một số ví dụ về Spring Reactive, @GetMappingđược sử dụng thay vì@RequestMapping

Câu trả lời:


193

@GetMappinglà một chú thích tổng hợp hoạt động như một phím tắt cho @RequestMapping(method = RequestMethod.GET).

@GetMappinglà phụ lục mới hơn. Nó hỗ trợ tiêu thụ

Tùy chọn tiêu dùng là:

Tiêu dùng = "văn bản / đơn giản"
tiêu dùng = {"văn bản / đơn giản", "ứng dụng / *"}

Để biết thêm chi tiết, xem: Chú thích GetMapping

hoặc đọc: yêu cầu biến thể ánh xạ

RequestMapping cũng hỗ trợ tiêu thụ

GetMapping chúng ta chỉ có thể áp dụng ở cấp phương thức và chú thích RequestMapping, chúng ta có thể áp dụng ở cấp lớp và cũng như ở cấp phương thức



3
RequestMapping hỗ trợ tiêu thụ cũng như: docs.spring.io/spring/docs/current/javadoc-api/org/...
Gábor DANI

22

Như bạn có thể thấy ở đây :

Cụ thể, @GetMappinglà một chú thích tổng hợp hoạt động như một phím tắt cho @RequestMapping(method = RequestMethod.GET).

Sự khác biệt giữa @GetMapping&@RequestMapping

@GetMappinghỗ trợ consumesthuộc tính như thế nào @RequestMapping.


14
Tin tốt! Kể từ 4/2017, trên trang web Spring mà bạn đã liên kết, GetMapping thực hiện bây giờ hỗ trợ 'tiêu thụ' và các thuộc tính RequestMapping bình thường. Có lẽ Spring đã thêm những người sau bài viết của bạn.
devdanke

10

@RequestMapping là một cấp lớp

@GetMapping là một cấp độ phương thức

Với nước rút mùa xuân 4.3. và mọi thứ đã thay đổi. Bây giờ bạn có thể sử dụng @GetMapping trên phương thức sẽ xử lý yêu cầu http. Đặc tả @RequestMapping cấp độ lớp được tinh chỉnh với chú thích @GetMapping (cấp độ phương thức)

Đây là một ví dụ:

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

Trước mùa xuân 4.3, đó là @RequestMapping(method=RequestMethod.GET)

Đọc thêm từ một cuốn sách của tác giả Craig Walls Đọc thêm từ một cuốn sách của tác giả Craig Walls


1
@RequestMapping cũng có thể được áp dụng cho phương thức.
ZhaoGang

Có nó có thể được. Tuy nhiên, @GetMapping ngắn gọn và cụ thể hơn đối với phương thức HTTP mà nó nhắm mục tiêu.
zee

3

Câu trả lời ngắn:

Không có sự khác biệt về ngữ nghĩa.

Cụ thể, @GetMapping là một chú thích tổng hợp hoạt động như một lối tắt cho @RequestMapping (phương thức = RequestMethod.GET).

Đọc thêm:

RequestMapping có thể được sử dụng ở cấp lớp:

Chú thích này có thể được sử dụng cả ở lớp và ở cấp phương thức. Trong hầu hết các trường hợp, ở cấp độ phương thức, các ứng dụng sẽ thích sử dụng một trong các biến thể cụ thể của phương thức HTTP @GetMapping, @PostMapping, @PutMapping, @DeleteMapping hoặc @PatchMapping.

trong khi GetMappingchỉ áp dụng cho phương thức:

Chú thích để ánh xạ các yêu cầu HTTP GET vào các phương thức xử lý cụ thể.


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

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

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.