@pathvariable用于从restful url路径提取变量值,支持单个/多个变量绑定、简化写法、类型自动转换及正则约束匹配。

在 Spring MVC 中,@PathVariable 用于从 RESTful 风格的 URL 路径中提取变量值,是构建清晰、语义化接口的关键注解。
基本用法:绑定单个路径变量
当 URL 中包含形如 /users/123 的结构时,可以用 @PathVariable 直接获取 123 这个值:
- 在控制器方法参数上添加
@PathVariable("id"),并指定与 URL 中花括号内一致的名称 - URL 映射需使用
{id}占位符,例如:@GetMapping("/users/{id}") - 参数类型会自动转换(如 String → Long),失败时抛出
MethodArgumentTypeMismatchException
简化写法:省略 value 属性
如果方法参数名与路径变量名完全相同,可省略 @PathVariable 的 value 属性:
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
-
@GetMapping("/posts/{slug}")+@PathVariable String slug✅ - 等价于
@PathVariable("slug") String slug - 注意:需开启 Java 编译的
-parameters参数(JDK 8+ 默认不保留参数名,IDEA 或 Maven 需显式配置)
多个路径变量同时提取
一个 URL 可含多个占位符,对应多个 @PathVariable 参数:
- 例如:
@GetMapping("/users/{userId}/orders/{orderId}") - 方法签名可写为:
public String getOrder(@PathVariable Long userId, @PathVariable Long orderId) - 各参数名需与路径中花括号内的名称严格匹配,顺序无关
配合正则表达式约束路径格式
可在占位符中加入正则,让 Spring 只匹配符合规则的路径,避免无效请求进入方法:
-
@GetMapping("/products/{id:\d+}"):只匹配id为纯数字的路径,如/products/100 -
@GetMapping("/files/{name:[a-z]+\.txt}"):匹配小写字母加 .txt 后缀,如/files/report.txt - 不匹配时直接返回 404,不会调用控制器方法










