В чем разница между @ GetMapping и @ RequestMapping (method = RequestMethod.GET)?
В некоторых примерах Spring Reactive я видел, что @ GetMapping использовалось вместо @ RequestMapping

nowszy94

Ответы (5)

@ GetMapping - это составная аннотация, которая действует как ярлык для @ RequestMapping (method = RequestMethod.GET).

@ GetMapping - это более новая аннотация. Поддерживает потребление

Варианты потребления:

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

Подробнее см .: Аннотация GetMapping

или прочтите: варианты отображения запроса

RequestMapping также поддерживает потребление

GetMapping мы можем применять только на уровне метода, а аннотацию RequestMapping мы можем применять на уровне класса, а также на уровне метода

@ RequestMapping - это уровень класса

@ GetMapping - это уровень метода

Спринт Spring 4.3. и все изменилось. Теперь вы можете использовать @GetMapping для метода, который будет обрабатывать HTTP-запрос. Спецификация @RequestMapping уровня класса уточняется с помощью аннотации @GetMapping (уровня метода)

Вот пример:

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

До Spring 4.3 это было @ RequestMapping (method = RequestMethod.GET)

Дополнительное чтение из книги Крейга Уоллса Extra reading from a book authored by Craig Walls

  1. @ RequestMapping поддерживает потребление даже с методом = GET, тогда как @GetMapping не поддерживает потребление.
  2. @ RequestMapping - это аннотация уровня метода и типа, а @GetMapping - аннотация уровня метода

В остальном @GetMapping совпадает с @RequestMapping (method = RequestMethod.GET)

Как видите здесь:

В частности, @ GetMapping - это составная аннотация, которая действует как ярлык для @ RequestMapping (method = RequestMethod.GET).

Разница между @ GetMapping и @ RequestMapping

@ GetMapping поддерживает атрибут потребляет, например @RequestMapping.

Короткий ответ:

Разницы в семантике нет.

В частности, @GetMapping - это составная аннотация, которая действует как ярлык для @RequestMapping (method = RequestMethod.GET).

Дополнительная информация:

RequestMapping может использоваться на уровне класса:

Эта аннотация может использоваться как на уровне класса, так и на уровне метода. В большинстве случаев на уровне метода приложения предпочтут использовать один конкретных вариантов метода HTTP @GetMapping, @PostMapping, @PutMapping, @DeleteMapping или @ PatchMapping.

, а GetMapping применяется только к методу:

Аннотация для отображения HTTP-запросов GET на конкретный обработчик методы.


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

2022 WebDevInsider