在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请求的场景

​

相关推荐
东宇科技6 分钟前
crmeb开源版本安装步骤2026-10-20
后端·php·crmeb
IT_Octopus17 分钟前
Apollo 配置中心入门:一所“小学校“读懂 Portal、Meta Server、Config Service
java·后端·spring
CHHH_HHH1 小时前
【Linux网络篇】初识网络与Socket编程基础
linux·服务器·c语言·开发语言·网络·后端·1024程序员节
弦儿1 小时前
后端 Web 实战:员工管理(新增员工 + 事务管理 + 文件上传)
java·后端
Gopher_HBo1 小时前
Go reflect包值操作 Value 的读写、可设置性与 interface 布局
后端
excel2 小时前
用 Node.js 搭建一套可持续获客的 SEO 内容系统:前端工程师 30 天实战方案
前端·后端
阿良别做梦2 小时前
LangGraph 学习之路:给文档摘要接上模型
后端·开源
Random Glow2 小时前
一条 SQL 从输入到返回,中间经历了什么
数据库·后端·mysql·性能优化·innodb·1024程序员节
GISer_Jing3 小时前
营销活动低代码前后台方案
后端
IT_陈寒4 小时前
React项目实战经验分享:如何避免useEffect闭包陷阱导致的陈旧状态问题?
前端·人工智能·后端