Spring MVC 常见注解详解:让 HTTP 请求精准命中你的方法

简介: 本文详解Spring MVC核心注解,从@RequestMapping到@GetMapping等快捷方式,结合@PathVariable、@RequestBody等常用配套注解,助你掌握声明式路由开发,提升效率,实现RESTful风格接口设计。

在引入 Spring MVC 后,我们不再需要配置繁琐的 XML 映射文件,而是通过注解将前端发起的 HTTP 请求(如 GET /user/1)直接绑定到后端某个 Java 方法上。这种“声明式路由”极大提升了开发效率。

那么,这些注解到底有哪些?各自怎么用?本文带你一文搞懂。


一、核心注解:@RequestMapping

✅ 作用

HTTP 请求路径 映射到 Controller 中的方法

📌 基本用法

@Controller
public class StaffController {
    @RequestMapping("/staff/add")
    public String addStaff() {
        // 处理新增员工逻辑
        return "success";
    }
    @RequestMapping("/staff/delete")
    public String deleteStaff() {
        // 处理删除逻辑
        return "success";
    }
}
  • 前端访问 http://localhost:8080/staff/add → 自动调用 addStaff() 方法;
  • 路径必须前后端一致,否则 404。

🔧 高级用法(可选)

  • 指定请求方法:
@RequestMapping(value = "/staff", method = RequestMethod.POST)
  • 支持路径变量:
@RequestMapping("/staff/{id}")
public String getStaff(@PathVariable Long id) { ... }

💡 @RequestMapping 是“万能注解”,但写起来略显冗长。


二、快捷注解:语义化 HTTP 方法

Spring 提供了更简洁、语义更清晰的组合注解,它们本质上都是 @RequestMapping 的封装

注解 等价写法 适用场景
@GetMapping("/user") @RequestMapping(method = GET) 查询数据
@PostMapping("/user") @RequestMapping(method = POST) 新增数据
@PutMapping("/user") @RequestMapping(method = PUT) 更新数据
@DeleteMapping("/user") @RequestMapping(method = DELETE) 删除数据

✅ 推荐写法(更清晰)

@RestController
@RequestMapping("/staff")
public class StaffController {
    @PostMapping("/add")      // 新增
    public Result add(@RequestBody Staff staff) { ... }
    @PutMapping("/{id}")     // 修改
    public Result update(@PathVariable Long id, @RequestBody Staff staff) { ... }
    @DeleteMapping("/{id}")  // 删除
    public Result delete(@PathVariable Long id) { ... }
    @GetMapping("/{id}")     // 查询
    public Result getById(@PathVariable Long id) { ... }
}

✅ 优势:

  • 代码自解释(看到 @PostMapping 就知道是新增);
  • 减少样板代码;
  • 符合 RESTful 设计规范。

三、其他常用配套注解

注解 作用 示例
@PathVariable 获取 URL 路径中的变量 /user/{id}@PathVariable("id") Long id
@RequestParam 获取 URL 查询参数或表单参数 ?name=张三@RequestParam("name") String name
@RequestBody 接收 JSON 请求体并自动反序列化为对象 前端传 { "name": "张三" }@RequestBody User user
@ResponseBody 将返回值直接写入 HTTP 响应体(常用于返回 JSON) 配合 @RestController 自动生效
@RestController = @Controller + @ResponseBody 所有方法默认返回 JSON,无需加 @ResponseBody

四、小结:如何选择?

  • 如果你只做简单映射,用 @RequestMapping 足够;
  • 但强烈推荐使用 @GetMapping / @PostMapping 等语义化注解,代码更清晰、团队协作更高效;
  • 路径设计建议遵循 RESTful 风格
  • GET /users → 查询列表  
  • POST /users → 新增用户  
  • GET /users/1 → 查询 ID=1 的用户  
  • PUT /users/1 → 更新 ID=1 的用户  
  • DELETE /users/1 → 删除 ID=1 的用户

附:原理简述(可选了解)

Spring MVC 启动时,会扫描所有被 @Controller 标记的类,解析其中的 @RequestMapping 及其派生注解,构建一个 “请求路径 → 方法” 的映射表(HandlerMapping)

当请求到来时,DispatcherServlet 根据 URL 和 HTTP 方法查找匹配的方法并执行。

这就是为什么路径必须精确匹配,且注解要写在 Spring 管理的 Bean 上。


掌握这些注解,你就已经掌握了 Spring MVC 的“路由密码”。接下来,只需专注业务逻辑,让请求自动找到它的归宿!


相关文章
|
12天前
|
数据采集 人工智能 安全
|
7天前
|
编解码 人工智能 自然语言处理
⚽阿里云百炼通义万相 2.6 视频生成玩法手册
通义万相Wan 2.6是全球首个支持角色扮演的AI视频生成模型,可基于参考视频形象与音色生成多角色合拍、多镜头叙事的15秒长视频,实现声画同步、智能分镜,适用于影视创作、营销展示等场景。
590 4
|
8天前
|
机器学习/深度学习 人工智能 前端开发
构建AI智能体:七十、小树成林,聚沙成塔:随机森林与大模型的协同进化
随机森林是一种基于决策树的集成学习算法,通过构建多棵决策树并结合它们的预测结果来提高准确性和稳定性。其核心思想包括两个随机性:Bootstrap采样(每棵树使用不同的训练子集)和特征随机选择(每棵树分裂时只考虑部分特征)。这种方法能有效处理大规模高维数据,避免过拟合,并评估特征重要性。随机森林的超参数如树的数量、最大深度等可通过网格搜索优化。该算法兼具强大预测能力和工程化优势,是机器学习中的常用基础模型。
345 164
|
6天前
|
机器学习/深度学习 自然语言处理 机器人
阿里云百炼大模型赋能|打造企业级电话智能体与智能呼叫中心完整方案
畅信达基于阿里云百炼大模型推出MVB2000V5智能呼叫中心方案,融合LLM与MRCP+WebSocket技术,实现语音识别率超95%、低延迟交互。通过电话智能体与座席助手协同,自动化处理80%咨询,降本增效显著,适配金融、电商、医疗等多行业场景。
348 155

热门文章

最新文章