Diferença entre as anotações @GetMapping e @RequestMapping (método = RequestMethod.GET)

152

Qual é a diferença entre @GetMappinge @RequestMapping(method = RequestMethod.GET)?
Eu já vi em alguns exemplos do Spring Reactive, que @GetMappingforam usados ​​em vez de@RequestMapping

nowszy94
fonte

Respostas:

195

@GetMappingé uma anotação composta que atua como um atalho para @RequestMapping(method = RequestMethod.GET).

@GetMappingé a anotação mais recente. Suporta consome

As opções de consumo são:

consome = "texto / sem formatação"
consome = {"texto / sem formatação", "aplicativo / *"}

Para mais detalhes, consulte: Anotação GetMapping

ou leia: solicite variantes de mapeamento

O RequestMapping também suporta consumos

GetMapping, podemos aplicar apenas no nível do método, e a anotação RequestMapping, podemos aplicar no nível da classe e também no nível do método

dhS
fonte
3
O RequestMapping também suporta consumos
Gábor DANI
22

Como você pode ver aqui :

Especificamente, @GetMappingé uma anotação composta que atua como um atalho para @RequestMapping(method = RequestMethod.GET).

Diferença entre @GetMapping&@RequestMapping

@GetMappingsuporta o consumesatributo like @RequestMapping.

Deroude
fonte
14
Boas notícias! A partir de 4/2017, na página web da Primavera é ligada ao, GetMapping não suportam agora 'consome' e os atributos habituais RequestMapping. Provavelmente o Spring adicionou os itens após o seu post.
precisa saber é o seguinte
10

@RequestMapping é um nível de classe

@GetMapping é um nível de método

Com sprint Primavera 4.3. e as coisas mudaram. Agora você pode usar @GetMapping no método que manipulará a solicitação http. A especificação @RequestMapping no nível da classe é refinada com a anotação @GetMapping (no nível do método)

Aqui está um exemplo:

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

Leitura extra de um livro de autoria de Craig Walls Leitura extra de um livro de autoria de Craig Walls

zee
fonte
1
O @RequestMapping também pode ser aplicado ao método
precisa saber é o seguinte
Sim, pode ser. No entanto, @GetMapping é mais sucinto e específico ao método HTTP que ele segmenta.
zee
3

Resposta curta:

Não há diferença na semântica.

Especificamente, @GetMapping é uma anotação composta que atua como um atalho para @RequestMapping (método = RequestMethod.GET).

Leitura adicional:

RequestMapping pode ser usado no nível da classe:

Esta anotação pode ser usada na classe e no nível do método. Na maioria dos casos, no nível do método, os aplicativos preferem usar uma das variantes específicas do método HTTP @GetMapping, @PostMapping, @PutMapping, @DeleteMapping ou @PatchMapping.

enquanto GetMappingse aplica apenas ao método:

Anotação para mapear solicitações HTTP GET em métodos específicos do manipulador.


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
fonte