web-dev-qa-db-fra.com

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

Quelle est la différence entre @GetMapping et @RequestMapping(method = RequestMethod.GET)?
J'ai vu dans certains exemples Spring Reactive que @GetMapping était utilisé à la place de @RequestMapping

92
nowszy94

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

@GetMapping est la nouvelle version. Il soutient consomme

Les options de consommation sont:

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

Pour plus de détails, voir: GetMapping Annotation

ou lisez: variantes de mappage de demandes

RequestMapping prend également en charge les consommations

130
dhS

Comme vous pouvez le voir ici :

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

Différence entre @GetMapping et @RequestMapping

@GetMapping supporte l'attribut consumes comme par exemple @RequestMapping.

18
Deroude

@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 classe est affinée avec l'annotation @GetMapping au niveau méthode.

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 Extra reading from a book authored by Craig Walls

4
zee

Réponse courte:

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

Plus précisément, @GetMapping est une annotation compound qui agit en tant que raccourci pour @RequestMapping (method = RequestMethod.GET).

Lectures supplé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èrent en utiliser un des variantes spécifiques à la méthode HTTP @GetMapping, @PostMapping, @PutMapping, @DeleteMapping ou @PatchMapping.

tandis que GetMapping s'applique uniquement à la méthode:

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


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

0
ZhaoGang