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 的“路由密码”。接下来,只需专注业务逻辑,让请求自动找到它的归宿!


相关文章
|
5月前
|
SQL 安全 Java
了解 SQL 注入:原理、危害与防御
SQL注入是Web安全头号威胁,攻击者通过恶意SQL代码窃取、篡改或删除数据。本文详解其原理、危害及防御方案,强调预编译、输入校验、最小权限等核心防护措施,助你筑牢数据库安全防线。
|
5月前
|
XML Java 数据格式
Spring @Configuration 注解详解:用 Java 代码替代 XML 配置
`@Configuration` 是 Spring 实现 Java 配置的核心注解,替代传统 XML,通过 `@Bean` 注册 Bean,结合 `@Import`、`@ComponentScan` 等实现类型安全、可维护的配置方式,推动 Spring 应用现代化。
|
5月前
|
缓存 Java 数据库连接
MyBatis 常见配置详解:属性优先级、执行器与多环境支持
MyBatis 是优秀的持久层框架,简化数据库操作。本文详解配置属性加载优先级(代码 > 外部文件 > 内联)、常用全局设置(如缓存、延迟加载)及多环境多数据源配置方法,助力提升系统稳定与性能。
|
5月前
|
JSON 前端开发 安全
用自定义注解 + 拦截器实现登录鉴权
通过自定义注解 `@Login` 结合 Spring 拦截器,实现声明式登录校验。无需重复编码,自动拦截未登录请求,提升代码可维护性与安全性,适用于前后端分离架构的权限控制实践。
|
5月前
|
缓存 JSON 前端开发
Spring Boot集成Thymeleaf模板引擎
Thymeleaf 是现代Java模板引擎,支持HTML静态原型与动态数据融合,前后端可协作开发。通过 `th:*` 标签绑定数据,浏览器可直接预览页面,结合Spring Boot 使用便捷,广泛应用于服务端渲染场景。
|
5月前
|
Java Spring
Spring Boot 中的 @RequestParam:获取查询参数与表单数据
`@RequestParam` 用于提取 HTTP 请求中的查询参数或表单数据,支持设置参数名、是否必填及默认值。适用于 `?key=value` 形式或 POST 表单,字段多时推荐封装为实体类自动绑定,与 `@PathVariable` 按路径取值不同,用途明确,是处理 Web 请求的常用方式。
|
5月前
|
Java API Spring
Spring Boot 中的 @PathVariable:获取 RESTful 路径参数
在Spring Boot中,`@PathVariable`用于提取RESTful API URL中的动态参数。支持单个或多个路径变量,参数名一致时可省略value属性,不一致时需显式绑定,是构建清晰、语义化接口的关键注解之一。
|
5月前
|
JSON 前端开发 Java
Spring Boot 中的 @RequestMapping 与快捷映射注解
`@RequestMapping` 是 Spring MVC 中用于映射 HTTP 请求路径与处理方法的核心注解,可标注在类或方法上。类上使用定义公共前缀,方法上指定具体路径和请求方式。常用属性包括 `value`(路径)、`method`(请求类型)、`produces`(响应类型)。Spring 还提供了 `@GetMapping`、`@PostMapping` 等快捷注解,语义更清晰,推荐优先使用。
|
5月前
|
JSON 前端开发 Java
Spring Boot 封装统一返回的数据结构
本课讲解如何设计统一的JSON响应结构,通过泛型类`JsonResult<T>`封装返回数据,规范包含code、msg、data的标准格式,提升前后端协作效率与API可维护性。
|
5月前
|
监控 前端开发 Java
Spring Boot 统一异常处理与全局响应增强
本文介绍如何在Spring Boot中实现全局异常处理,通过`@RestControllerAdvice`和自定义`BusinessException`统一拦截异常,结合`JsonResult`标准化响应格式,避免信息泄露,提升前后端协作效率与系统健壮性。

热门文章

最新文章