@PathVariable用于绑定URL路径变量,如@GetMapping("/users/{id}")中的{id},支持多变量、类型转换及正则限制,但不支持required=false。

@PathVariable 是 Spring MVC 中用于将 URL 路径中的变量值绑定到控制器方法参数上的注解。它让开发者能直接从 RESTful 风格的 URL 中提取动态部分,比如用户 ID、文章编号等。
URL 路径中定义变量占位符
在 @RequestMapping(或 @GetMapping、@PostMapping 等)的路径中,用花括号 {} 包裹变量名,表示这是一个可变路径段:
-
@GetMapping("/users/{id}")——{id}是占位符 -
@PutMapping("/orders/{orderId}/items/{itemId}")—— 支持多个变量 - 路径必须严格匹配,如
/users/123才会触发该映射
方法参数用 @PathVariable 绑定变量
在控制器方法中,用 @PathVariable 注解标注参数,并指定与路径中一致的变量名(或省略,默认按参数名匹配):
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
-
public String getUser(@PathVariable Long id)—— 参数名id与{id}一致,可省略注解内的 value -
@PathVariable("orderId") Long oid—— 当参数名不同时,需显式指定 value - 支持基本类型(int、long)、String、枚举,Spring 会自动类型转换;转换失败抛出
MethodArgumentTypeMismatchException
处理可选或默认值路径变量
@PathVariable 默认是必需的,URL 中缺少对应路径段会导致 404。若想支持“可选”,不能直接设为 optional,而是通过以下方式间接实现:
立即学习“Java免费学习笔记(深入)”;
- 使用两个重载方法:一个带变量,一个不带(如
/users和/users/{id}) - 配合 @GetMapping("/{id}") + @GetMapping(无路径变量)分别映射
- 注意:不能写成
@PathVariable(value = "id", required = false)—— 这在 Spring 中不被允许,会报错
常见注意事项
- 路径变量名大小写敏感,
{userId}和@PathVariable String userid不会自动匹配 - URL 编码内容(如空格、斜杠)会被自动解码,无需手动处理
- 若路径含正则表达式限制,可在占位符后加规则,例如:
"/users/{id:\d+}"表示只匹配数字 - 多个 @PathVariable 按名称匹配,顺序无关

















