注解@GetMapping和@RequestMapping(method = RequestMethod.GET)的区别

问题描述 投票:0回答:7

@GetMapping
@RequestMapping(method = RequestMethod.GET)
有什么区别?
我在一些 Spring Reactive 示例中看到过 使用
@GetMapping
代替
@RequestMapping

java spring spring-mvc spring-4
7个回答
255
投票

@GetMapping
是一个组合注释,充当
@RequestMapping(method = RequestMethod.GET)
的快捷方式。

@GetMapping
是较新的注释。 它支持消费

消费选项有:

消耗=“文本/纯文本”
消耗 = {"text/plain", "application/*"}

更多详情请参阅: 获取映射注释

或阅读: 请求映射变体

RequestMapping 也支持消费

GetMapping 我们只能在方法级别应用,而 RequestMapping 注释我们可以在类级别和方法级别应用


26
投票

正如您所看到的这里

具体来说,

@GetMapping
是一个组合注释,充当
@RequestMapping(method = RequestMethod.GET)
的快捷方式。

@GetMapping
@RequestMapping

之间的区别

@GetMapping
支持
consumes
属性,例如
@RequestMapping


21
投票

@RequestMapping
是班级级别

@GetMapping
是方法级别

带有 sprint Spring 4.3。事情已经发生了变化。现在您可以在处理 http 请求的方法上使用 @GetMapping。类级别的 @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)

额外阅读 Craig Walls 所著的书 Extra reading from a book authored by Craig Walls


14
投票

简短回答:

语义上没有区别。

具体来说,@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


2
投票

`@RequestMapping` since 2.5


=> 可以处理所有HTTP方法

=> 适用于类和方法

=> 可以用作

@Controller

@RestController
 的替代品,如果我们使用它
与
@Component
一起。


`@GetMapping` since 4.3


=> 只能处理HTTP的GET方法

=> 仅适用于方法

@GetMapping

@RequestMapping(method = RequestMethod.GET)
 的特定类型。两者都支持消耗


-1
投票
  1. @RequestMapping
     即使使用 method=GET 也支持消费,而 @GetMapping 不支持消费。
  2. @RequestMapping 是 Method & Type 级别的注解,而 @GetMapping 是 Method 级别的注解

除此之外,@GetMapping 与 @RequestMapping(method=RequestMethod.GET) 相同


-1
投票
  1. @GetMapping

    @RequestMapping(method = RequestMethod.GET)
     的快捷方式
    

  2. @RequestMapping

    是班级级别

  3. @GetMapping

    是方法级别

  4. @RequestMapping

    注释用于将Web请求映射到特定的处理程序类和函数。该注释的主要优点是它可以在控制器类和方法上使用。

  5. 始终建议在控制器方法上声明

    @RequestMapping

     时要具体,因为在大多数映射处理程序类中,不使用 
    @Getmapping

© www.soinside.com 2019 - 2024. All rights reserved.