Diferencia entre las anotaciones @GetMapping y @RequestMapping (method = RequestMethod.GET)

152

¿Cuál es la diferencia entre @GetMappingy @RequestMapping(method = RequestMethod.GET)?
He visto en algunos ejemplos de Spring Reactive, que @GetMappingse utilizó en lugar de@RequestMapping

nowszy94
fuente

Respuestas:

195

@GetMappinges una anotación compuesta que actúa como un acceso directo para @RequestMapping(method = RequestMethod.GET).

@GetMappinges la nueva anotación. Apoya consume

Las opciones de consumo son:

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

Para obtener más detalles, consulte: Anotación GetMapping

o leer: solicitar variantes de mapeo

RequestMapping también admite consumos

GetMapping podemos aplicar solo a nivel de método y la anotación RequestMapping podemos aplicar a nivel de clase y también a nivel de método

dhS
fuente
3
RequestMapping también admite consumos: docs.spring.io/spring/docs/current/javadoc-api/org/…
Gábor DANI
22

Como puedes ver aquí :

Específicamente, @GetMappinges una anotación compuesta que actúa como un atajo para @RequestMapping(method = RequestMethod.GET).

Diferencia entre @GetMapping&@RequestMapping

@GetMappingadmite el consumesatributo like @RequestMapping.

Deroude
fuente
14
¡Buenas noticias! A partir de 4/2017, en la página web de la primavera se ha vinculado a, GetMapping no apoyan ahora 'consume' y los atributos RequestMapping habituales. Probablemente Spring los agregó después de tu publicación.
devdanke
10

@RequestMapping es un nivel de clase

@GetMapping es un nivel de método

Con sprint Spring 4.3. y hasta las cosas han cambiado. Ahora puede usar @GetMapping en el método que manejará la solicitud http. La especificación @RequestMapping a nivel de clase se refina con la anotación @GetMapping (nivel de método)

Aquí hay un ejemplo:

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

Antes de la primavera 4.3, era @RequestMapping(method=RequestMethod.GET)

Lectura extra de un libro escrito por Craig Walls Lectura extra de un libro escrito por Craig Walls

zee
fuente
1
@RequestMapping también se puede aplicar al método.
ZhaoGang
Si puede ser. Sin embargo, @GetMapping es más sucinto y específico para el método HTTP al que apunta.
zee
3

Respuesta corta:

No hay diferencia en semántica.

Específicamente, @GetMapping es una anotación compuesta que actúa como un acceso directo para @RequestMapping (method = RequestMethod.GET).

Otras lecturas:

RequestMapping se puede usar a nivel de clase:

Esta anotación se puede usar tanto a nivel de clase como a nivel de método. En la mayoría de los casos, a nivel de método, las aplicaciones preferirán usar una de las variantes específicas del método HTTP @GetMapping, @PostMapping, @PutMapping, @DeleteMapping o @PatchMapping.

mientras GetMapping solo se aplica al método:

Anotación para asignar solicitudes HTTP GET a métodos de controlador específicos.


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
fuente