Spring MVC @RequestMapping注解
@RequestMapping 用于定义请求 URL 到控制器方法的映射关系。
基本用法
Java
@Controller
public class UserController {
@RequestMapping("/user/list")
public String list() {
return "user/list";
}
}
注解属性
| 属性 | 类型 | 说明 |
|---|---|---|
| value/path | String[] | 请求路径 |
| method | RequestMethod[] | 请求方法 |
| params | String[] | 请求参数条件 |
| headers | String[] | 请求头条件 |
| consumes | String[] | Content-Type 条件 |
| produces | String[] | Accept 条件 |
类级别与方法级别组合
Java
@Controller
@RequestMapping("/api/user")
public class UserApiController {
@RequestMapping(value = "/list", method = RequestMethod.GET)
public List<User> list() {
return userService.findAll();
}
@RequestMapping(value = "/{id}", method = RequestMethod.GET)
public User get(@PathVariable Long id) {
return userService.findById(id);
}
}
完整路径:/api/user/list、/api/user/{id}
限定请求方法
Java
@RequestMapping(value = "/user", method = RequestMethod.POST)
public User create(@RequestBody User user) {
return userService.save(user);
}
组合注解
Spring 提供 HTTP 方法专用的组合注解:
| 注解 | 说明 |
|---|---|
| @GetMapping | GET 请求 |
| @PostMapping | POST 请求 |
| @PutMapping | PUT 请求 |
| @DeleteMapping | DELETE 请求 |
| @PatchMapping | PATCH 请求 |
Java
@GetMapping("/user/{id}")
public User get(@PathVariable Long id) {
return userService.findById(id);
}
@PostMapping("/user")
public User create(@RequestBody User user) {
return userService.save(user);
}
多路径映射
Java
@RequestMapping({"/user", "/users"})
public String userPage() {
return "user/list";
}
条件匹配
Java
// 参数条件:必须包含 name 参数
@RequestMapping(value = "/search", params = "name")
public String search(@RequestParam String name) {
return "search";
}
// 请求头条件
@RequestMapping(value = "/api", headers = "X-API-Version=1")
public String apiV1() {
return "api/v1";
}
// Content-Type 条件
@RequestMapping(value = "/upload", consumes = "multipart/form-data")
public String upload() {
return "upload";
}
// Accept 条件
@RequestMapping(value = "/data", produces = "application/json")
public String data() {
return "data";
}
Ant 风格路径
Java
@RequestMapping("/user/*") // 匹配 /user/任意单级路径
@RequestMapping("/user/**") // 匹配 /user/任意多级路径
@RequestMapping("/user/*.json") // 匹配 /user/xxx.json
推荐使用 @GetMapping、@PostMapping 等组合注解,代码更简洁。
要点总结
- @RequestMapping 可用于类和方法,路径自动拼接
- method 属性限定请求方法
- params、headers 属性支持条件匹配
- 优先使用 @GetMapping、@PostMapping 组合注解
📝 发现内容有误?点击此处直接编辑