在SpringBoot中,@GetMapper和@RequestMapping有什么区别?

联系:

@RequestMapping:
是一个通用的请求映射注解,支持所有HTTP方法(GET、POST、PUT等)。需要通过method属性显式指定具体的HTTP方法。

例如:

typescript 复制代码
@RequestMapping(value = "/example", method = RequestMethod.GET)
public String example() {
    return "example";
}

@GetMapping

@RequestMapping特化版本 ,专门用于处理HTTP GET请求 。它是Spring 4.3引入的组合注解(@RequestMapping(method = RequestMethod.GET)的简写)。

例如:

typescript 复制代码
@GetMapping("/example")
public String example() {
    return "example";
}

区别:

  • @GetMapping语法更简洁,无需手动指定method属性,直接映射GET请求。
  • @RequestMapping需要显式配置method属性,代码略显冗余。

组合注解:

Spring 还提供了其他类似的特化注解,与@GetMapping风格一致:

  • @PostMapping → 处理POST请求
  • @PutMapping → 处理PUT请求
  • @DeleteMapping → 处理DELETE请求
  • @PatchMapping → 处理PATCH请求

这些注解均基于@RequestMapping实现,但语义更清晰。

默认行为

  • @RequestMapping
    如果没有指定method属性,默认会映射所有HTTP方法 (GET、POST等)。这可能意外导致安全问题或不明确的端点行为。
    例如:
typescript 复制代码
@RequestMapping("/unsafe") // 会响应GET、POST等所有请求!
public String unsafe() {
    return "unsafe";
}
  • @GetMapping
    明确限定为GET请求,避免歧义。

总结

特性 @RequestMapping @GetMapping
HTTP方法 支持所有方法(需显式配置) 仅限GET
代码简洁性 冗余(需指定method 简洁
语义明确性 较低 高(专为GET设计)
安全性 需手动配置,易遗漏 默认安全
适用场景 需要支持多HTTP方法的场景 仅需处理GET请求的场景

相关推荐
GoGeekBaird3 小时前
我开源了 BeeWeave,给 AI Agent 搭一个越用越懂你的知识创作台
后端·github
犀利豆6 小时前
AI in Harness(四)
人工智能·后端
Hui Baby7 小时前
Spring Security
java·后端·spring
逝水无殇8 小时前
C# 运算符重载详解
开发语言·后端·c#
苏三说技术8 小时前
2026编程圈很火的10个Skills
后端
用户8356290780518 小时前
使用 Python 自动化 Excel 公式和函数:完整指南
后端·python
编程(变成)小辣鸡9 小时前
Spring事务失效场景
java·后端·spring
PinkSun9 小时前
MySQL 建表报 1030,能查不能建,排查 1 小时发现是我自己改了一行权限
后端
无相求码9 小时前
为什么 printf 可以接受任意数量参数?变长参数的底层真相
后端
郡杰9 小时前
Boot:MP|测验|结果封装|异常处理|前后联调|拦截器
后端