Різниця між примітками @GetMapping та @RequestMapping (метод = RequestMethod.GET)


152

Яка різниця між @GetMappingі @RequestMapping(method = RequestMethod.GET)?
Я бачив у деяких весняних реактивних прикладах, які @GetMappingвикористовували замість@RequestMapping

Відповіді:


195

@GetMapping- це складена примітка, яка виступає як ярлик для @RequestMapping(method = RequestMethod.GET).

@GetMapping- це новіший коментар. Він підтримує споживає

Варіанти споживання:

спажыває = "текст / простий"
споживає = {"текст / звичайний", "додаток / *"}

Детальнішу інформацію див. У розділі: Анотація GetMapping

або читати: запитувати варіанти відображення

Підтримка 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. Можливо, Весна додала їх після вашого допису.
девданке

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)

Додаткове читання з книги, автором якої був Крейг Уоллс Додаткове читання з книги, автором якої був Крейг Уоллс


1
@RequestMapping також можна застосувати до методу.
ЧжаоГан

Так, це може бути. Однак @GetMapping є більш стислим та специфічним для методу HTTP, на який він націлений.
zee

3

Коротка відповідь:

У семантичній різниці немає.

Зокрема, @GetMapping - це складена анотація, яка діє як ярлик для @RequestMapping (метод = 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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.