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

nowszy94
la source

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

dhS
la source
@GetMappingprend en charge consumes- docs.spring.io/spring-framework/docs/current/javadoc-api/org/…
whoami
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.

Deroude
la source
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

zee
la source
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

ZhaoGang
la source