tutorial framework ecosystem java spring spring-mvc spring-4

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



spring java (4)

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


Como puedes ver aquí :

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

Diferencia entre @GetMapping y @RequestMapping

@GetMapping admite el atributo consumes como @RequestMapping .


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

@GetMapping es la nueva anotación. Apoya consume

Las opciones de consumo son:

consume = "texto / sin formato"
consume = {"text / plain", "application / *"}

Para más detalles ver: Anotación GetMapping

o leer: solicitar variantes de mapeo

RequestMapping también admite consumos


@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 Spring 4.3, era @RequestMapping(method=RequestMethod.GET)

Lectura extra de un libro escrito por Craig Walls


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 que 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