Unterschied zwischen den Anmerkungen @GetMapping und @RequestMapping (method = RequestMethod.GET)

151

Was ist der Unterschied zwischen @GetMappingund @RequestMapping(method = RequestMethod.GET)?
Ich habe in einigen Spring Reactive-Beispielen gesehen, dass @GetMappinganstelle von verwendet wurde@RequestMapping

nowszy94
quelle

Antworten:

193

@GetMappingist eine zusammengesetzte Anmerkung, die als Verknüpfung für dient @RequestMapping(method = RequestMethod.GET).

@GetMappingist die neuere Annotaion. Es unterstützt Verbrauchs

Verbrauchsoptionen sind:

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

Weitere Informationen finden Sie unter: GetMapping-Anmerkung

oder lesen Sie: Anforderungszuordnungsvarianten

RequestMapping unterstützt auch Verbrauchsdaten

GetMapping können wir nur auf Methodenebene und RequestMapping-Annotation auf Klassenebene sowie auf Methodenebene anwenden

dhS
quelle
3
RequestMapping unterstützt auch Verbrauchsdaten
Gábor DANI
22

Wie Sie hier sehen können :

Insbesondere @GetMappinghandelt es sich um eine zusammengesetzte Anmerkung, die als Verknüpfung für dient @RequestMapping(method = RequestMethod.GET).

Unterschied zwischen @GetMapping&@RequestMapping

@GetMappingunterstützt das consumesAttribut wie @RequestMapping.

Deroude
quelle
14
Gute Nachrichten! Ab 4/2017, auf der Frühlings - Web - Seite verlinkt sind Sie, Getmapping hat jetzt ‚verbraucht‘ und die üblichen RequestMapping Attribute unterstützen. Wahrscheinlich hat Spring diese nach Ihrem Beitrag hinzugefügt.
Devdanke
10

@RequestMapping ist eine Klassenstufe

@GetMapping ist eine Methodenebene

Mit Sprint Spring 4.3. und die Dinge haben sich geändert. Jetzt können Sie @GetMapping für die Methode verwenden, die die http-Anforderung verarbeitet. Die @ RequestMapping-Spezifikation auf Klassenebene wird mit der @ GetMapping-Annotation (auf Methodenebene) verfeinert

Hier ist ein Beispiel:

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

Vor Frühjahr 4.3 war es @RequestMapping(method=RequestMethod.GET)

Zusätzliche Lektüre aus einem Buch von Craig Walls Zusätzliche Lektüre aus einem Buch von Craig Walls

zee
quelle
1
@RequestMapping kann auch auf Methoden angewendet werden.
ZhaoGang
Ja das kann sein. @GetMapping ist jedoch prägnanter und spezifischer für die HTTP-Methode, auf die es abzielt.
Zee
3

Kurze Antwort:

Es gibt keinen Unterschied in der Semantik.

Insbesondere ist @GetMapping eine zusammengesetzte Anmerkung, die als Verknüpfung für @RequestMapping (method = RequestMethod.GET) dient.

Weiterführende Literatur:

RequestMapping kann auf Klassenebene verwendet werden:

Diese Anmerkung kann sowohl auf Klassen- als auch auf Methodenebene verwendet werden. In den meisten Fällen bevorzugen Anwendungen auf Methodenebene die Verwendung einer der HTTP-methodenspezifischen Varianten @GetMapping, @PostMapping, @PutMapping, @DeleteMapping oder @PatchMapping.

während GetMappinggilt nur für Methode:

Anmerkung zum Zuordnen von HTTP-GET-Anforderungen zu bestimmten Handlermethoden.


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
quelle