注释@GetMapping和@RequestMapping(method = RequestMethod.GET)之间的区别

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

207688 次浏览

正如你所看到的在这里:

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

@GetMapping &@RequestMapping

@GetMapping支持consumes属性,如 @RequestMapping . < / p >

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

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

消费选项有:

consume = "text/plain"
. 消耗= {" text / plain”,“应用程序/ *”}< /强> < / p >

更多细节见: GetMapping注释 < / p > < p >或阅读: 请求映射变量 < / p >

RequestMapping也支持消费

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

@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撰写的一本书 < / p >

简短的回答:

语义上没有区别。

具体地说,@GetMapping是一个组合注释,充当一个 @RequestMapping(method = RequestMethod.GET).

. get

进一步阅读:

RequestMapping可以在类级别使用:

这个注释可以在类级和方法级使用。 在大多数情况下,在方法级应用程序更倾向于使用一个 HTTP方法的特定变量@GetMapping, @PostMapping @PutMapping, @DeleteMapping, @PatchMapping.

GetMapping只适用于方法:

将HTTP GET请求映射到特定处理程序的注释 方法。< / p >


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

  1. @RequestMapping即使使用方法=GET也支持消耗,而@GetMapping不支持消耗。
  2. @RequestMapping方法&类型级注释,而@GetMapping是方法级注释

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


                         `@RequestMapping` since 2.5

=比;能处理所有HTTP方法吗

=比;适用于类和方法

< p > =比;可以作为@Controller@RestController的替代品,如果我们使用它 与@Component一起。


                        `@GetMapping` since 4.3

=比;只能处理HTTP的GET方法吗

=比;只适用于方法

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

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

  2. @RequestMapping是类级别

  3. @GetMapping是方法级

4) @RequestMapping注释用于将web请求映射到特定的处理程序类和函数。这个注释的主要优点是它可以同时用于控制器类和方法。

5)通常建议在控制器方法上声明@RequestMapping时要明确,就像在大多数映射处理程序类中一样,@Getmapping不会被使用。