Différence entre les annotations @GetMapping et @RequestMapping (method = RequestMethod.GET)


153

Quelle est la différence entre @GetMappinget @RequestMapping(method = RequestMethod.GET)?
J'ai vu dans certains exemples Spring Reactive, qui a @GetMappingété utilisé à la place de@RequestMapping

Réponses:


196

@GetMappingest une annotation composée qui agit comme un raccourci pour @RequestMapping(method = RequestMethod.GET).

@GetMappingest la nouvelle annotation. Il prend en charge consomme

Les options de consommation sont:

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

Pour plus de détails, voir: Annotation GetMapping

ou lire: demander des variantes de mappage

RequestMapping prend également en charge les consommations

GetMapping que nous pouvons appliquer uniquement au niveau de la méthode et l'annotation RequestMapping que nous pouvons appliquer au niveau de la classe et ainsi qu'au niveau de la méthode



3
RequestMapping prend également en charge les consommations suivantes: docs.spring.io/spring/docs/current/javadoc-api/org
Gábor DANI

22

Comme vous pouvez le voir ici :

Plus précisément, @GetMappingest une annotation composée qui agit comme un raccourci pour @RequestMapping(method = RequestMethod.GET).

Différence entre @GetMapping&@RequestMapping

@GetMappingprend en charge l' consumesattribut comme @RequestMapping.


14
Bonnes nouvelles! À partir du 4/2017, sur la page Web Spring à laquelle vous avez lié, GetMapping prend désormais en charge les `` consommations '' et les attributs RequestMapping habituels. Spring a probablement ajouté ceux-ci après votre publication.
devdanke

10

@RequestMapping est un niveau de classe

@GetMapping est un niveau de méthode

Avec Sprint Spring 4.3. et les choses ont changé. Vous pouvez maintenant utiliser @GetMapping sur la méthode qui gérera la requête http. La spécification @RequestMapping au niveau de la classe est affinée avec l'annotation (au niveau de la méthode) @GetMapping

Voici un exemple:

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

Avant le printemps 4.3, c'était @RequestMapping(method=RequestMethod.GET)

Lecture supplémentaire d'un livre écrit par Craig Walls Lecture supplémentaire d'un livre écrit par Craig Walls


1
@RequestMapping peut également être appliqué à la méthode.
ZhaoGang

Oui c'est possible. Cependant, @GetMapping est plus succinct et spécifique à la méthode HTTP qu'il cible.
zee

3

Réponse courte:

Il n'y a aucune différence de sémantique.

Plus précisément, @GetMapping est une annotation composée qui agit comme un raccourci pour @RequestMapping (method = RequestMethod.GET).

Lectures complémentaires:

RequestMapping peut être utilisé au niveau de la classe:

Cette annotation peut être utilisée à la fois au niveau de la classe et de la méthode. Dans la plupart des cas, au niveau de la méthode, les applications préféreront utiliser l'une des variantes spécifiques à la méthode HTTP @GetMapping, @PostMapping, @PutMapping, @DeleteMapping ou @PatchMapping.

tandis GetMappingque s'applique uniquement à la méthode:

Annotation pour le mappage des requêtes HTTP GET sur des méthodes de gestionnaire spécifiques.


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

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.