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

相关推荐
databook12 分钟前
逃离SQL丛林:实用主义的数据救赎
后端·sql·数据分析
舒一笑1 小时前
AI 系统落地难的,从来不只是模型:一次企业级部署实施复盘
运维·后端·程序员
心勤则明1 小时前
Spring AI Alibaba Skills 的渐进式披露与热更新实战
java·后端·spring
金融数据出海2 小时前
java对接美股股票api涵盖实时行情、K 线、指数等核心接口。
后端
认真的小羽❅2 小时前
从入门到精通:Spring Boot 整合 MyBatis 全攻略
spring boot·后端·mybatis
摆烂工程师2 小时前
教你如何查询 Codex 最新额度是多少,以及 ChatGPT Pro、Plus、Business 最新额度变化
前端·后端·ai编程
任聪聪2 小时前
我做了一款通用本地化部署模型运行调度器,运行所有大模型!
后端
开发者如是说2 小时前
可能是最好用的多语言管理工具
android·前端·后端
何陋轩4 小时前
AI时代,程序员何去何从?别慌,看完这篇你就明白了
后端·面试
weixin_408099674 小时前
OCR 识别率提升实战:模糊 / 倾斜 / 反光图片全套优化方案(附 Python / Java / PHP 代码)
图像处理·人工智能·后端·python·ocr·api·抠图