it-swarm.com.ru

Разница между аннотациями @GetMapping и @RequestMapping (method = RequestMethod.GET)

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

112
nowszy94

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

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

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

потребление = "текст/обычный"
потребляет = {"text/plain", "application/*"}

Подробнее см.: GetMapping Annotation

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

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

130
dhS

Как вы можете видеть здесь :

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

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

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

18
Deroude

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

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

Спринт Весна 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";
}
}

До весны 4.3 это была @RequestMapping(method=RequestMethod.GET)

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

4
zee

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

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

В частности, @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

0
ZhaoGang