@RequestMapping是Spring MVC中用于映射HTTP请求到控制器方法的基础注解,可标注在类(定义路径前缀)或方法(定义具体路径和请求方式)上;推荐类级+方法级两级映射,并优先使用@GetMapping等语义化快捷注解。

@RequestMapping 是 Spring MVC 中最基础的请求映射注解,用于将 HTTP 请求(如 GET、POST)与控制器中的处理方法关联起来。它既可标注在类上(定义公共路径前缀),也可标注在方法上(定义具体路径和请求方式)。
基本用法:类 + 方法两级映射
推荐将 @RequestMapping 用在类上定义模块级路径前缀,再在方法上细化具体路径,避免重复书写:
<font size="2">@RestController<br>@RequestMapping("/api/users")<br>public class UserController {<br><br> // 映射到 GET /api/users<br> @GetMapping<br> public List<User> getAll() { ... }<br><br> // 映射到 GET /api/users/123<br> @GetMapping("/{id}")<br> public User getById(@PathVariable Long id) { ... }<br><br> // 映射到 POST /api/users<br> @PostMapping<br> public User create(@RequestBody User user) { ... }<br>}</font>
注意:@GetMapping、@PostMapping 等是 @RequestMapping 的快捷变体(等价于 @RequestMapping(method = RequestMethod.GET)),语义更清晰,日常开发中优先使用。
支持多种匹配方式
@RequestMapping 的 value(或简写为字符串值)支持灵活路径表达:
立即学习“Java免费学习笔记(深入)”;
- 普通路径:
@RequestMapping("/home")→ 匹配/home - 路径变量:
@RequestMapping("/user/{id}")→ 配合@PathVariable获取动态值 - 通配符:
@RequestMapping("/files/**")→ 匹配/files/a/b.txt等任意子路径 - Ant 风格模式:
@RequestMapping("/admin/**/delete")→ 匹配/admin/user/delete、/admin/order/delete
限定请求方法和参数条件
通过 method 和 params 等属性可进一步约束触发条件:
-
@RequestMapping(value = "/login", method = RequestMethod.POST)→ 仅响应 POST -
@RequestMapping(value = "/search", params = "type=user")→ 要求 URL 含?type=user -
@RequestMapping(value = "/form", headers = "Content-Type=application/json")→ 要求请求头匹配 -
@RequestMapping(value = "/export", consumes = "application/json")→ 指定期望的请求体类型 -
@RequestMapping(value = "/report", produces = "text/csv")→ 指定返回内容类型(自动设响应头)
注意事项与常见问题
使用时需留意以下几点:
- 类上的 @RequestMapping 路径末尾斜杠不影响匹配(
/api和/api/效果一致) - 方法上若未指定
method,则默认接受所有 HTTP 方法(不推荐,易引发安全或逻辑问题) - 多个映射规则冲突时,Spring 按“精确路径 > 路径变量 > 通配符”优先级匹配
- Spring Boot 2.6+ 默认开启严格路径匹配(
useTrailingSlashMatch=false),即/api不再匹配/api/,如有需要可在配置中调整


















