Differenza tra le annotazioni @GetMapping e @RequestMapping (method = RequestMethod.GET)


153

Qual è la differenza tra @GetMappinge @RequestMapping(method = RequestMethod.GET)?
Ho visto in alcuni esempi di Spring Reactive, che è @GetMappingstato usato al posto di@RequestMapping

Risposte:


196

@GetMappingè un'annotazione composta che funge da scorciatoia per @RequestMapping(method = RequestMethod.GET).

@GetMappingè il più recente annotaion. Supporta i consumi

Le opzioni di consumo sono:

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

Per ulteriori dettagli, consultare: GetMapping Annotation

oppure leggi: richiedi varianti di mappatura

RequestMapping supporta anche i consumi

GetMapping possiamo applicare solo a livello di metodo e l'annotazione RequestMapping possiamo applicare a livello di classe e a livello di metodo



3
RequestMapping supporta anche i consumi: docs.spring.io/spring/docs/current/javadoc-api/org/…
Gábor DANI

22

Come puoi vedere qui :

In particolare, @GetMappingè un'annotazione composta che funge da scorciatoia per @RequestMapping(method = RequestMethod.GET).

Differenza tra @GetMapping&@RequestMapping

@GetMappingsupporta l' consumesattributo like @RequestMapping.


14
Buone notizie! A partire dal 4/2017, sulla pagina web di Primavera si è collegato al, GetMapping non ora supportano 'consuma' e le solite attributi RequestMapping. Probabilmente Spring ha aggiunto quelli dopo il tuo post.
devdanke,

10

@RequestMapping è un livello di classe

@GetMapping è a livello di metodo

Con sprint Spring 4.3. e le cose sono cambiate. Ora puoi usare @GetMapping sul metodo che gestirà la richiesta http. La specifica @RequestMapping a livello di classe viene perfezionata con l'annotazione (a livello di metodo) @GetMapping

Ecco un esempio:

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

Prima della primavera 4.3, lo era @RequestMapping(method=RequestMethod.GET)

Lettura extra da un libro scritto da Craig Walls Lettura extra da un libro scritto da Craig Walls


1
@RequestMapping può anche essere applicato al metodo.
ZhaoGang

Sì, può essere. Tuttavia, @GetMapping è più conciso e specifico del metodo HTTP a cui è destinato.
Zee

3

Risposta breve:

Non c'è differenza in semantico.

In particolare, @GetMapping è un'annotazione composta che funge da collegamento per @RequestMapping (metodo = RequestMethod.GET).

Ulteriori letture:

RequestMapping può essere utilizzato a livello di classe:

Questa annotazione può essere utilizzata sia a livello di classe che a livello di metodo. Nella maggior parte dei casi, a livello di metodo le applicazioni preferiranno utilizzare una delle varianti specifiche del metodo HTTP @GetMapping, @PostMapping, @PutMapping, @DeleteMapping o @PatchMapping.

mentre GetMappingsi applica solo al metodo:

Annotazione per il mapping delle richieste HTTP GET su metodi specifici del gestore.


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

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.