@PathVariable用于绑定URL路径中{xxx}占位符的值到方法参数,支持单/多变量、类型自动转换、required=false设可选(需用包装类型)、正则匹配特殊字符(如{name:.+})。

在 Spring Boot 的 Controller 中,@PathVariable 用于绑定 URL 路径中占位符(即动态段)的值到方法参数上,是 RESTful 风格接口最常用的参数获取方式之一。
基本用法:单个路径变量
URL 中用 {xxx} 定义占位符,方法参数用 @PathVariable("xxx") 或直接用同名参数(推荐)绑定:
@GetMapping("/users/{id}")
public String getUser(@PathVariable Long id) {
return "User ID: " + id;
}
访问 /users/123 时,id 自动解析为 123L。Spring 会尝试类型转换,失败则返回 400 错误。
多个路径变量:支持组合与顺序无关
URL 可含多个占位符,参数名需与占位符名一致(或显式指定):
当用户要求为 Java 代码添加注释、修改注释、审查注释、整理注释格式,或要求按照代码注释规范处理 Java 文件时,使用本技能。本技能用于统一生成和维护 Java 类注释模板、按 Git 对比 release 判断版本号、补充每行代码上方中文块注释、调整注释空行规则,并保持 Java 文件 UTF-8 无 BOM 编码。典型触发场景包括:补充类注释、更新 @version、检查 @author 来源、整理行尾注释、把注释放到代码上一行、检查注释是否符合规范、构建前检查 Java 注释风格。
-
推荐写法(参数名匹配):
@GetMapping("/orders/{orderId}/items/{itemId}")<br>public String getItem(@PathVariable Long orderId, @PathVariable Long itemId) -
显式指定名称(适用于参数名不一致):
@PathVariable("orderId") Long oid
可选路径变量与默认值
路径变量默认必须存在;若想设为可选,需配合 required = false,但注意:基本类型(如 int、long)不能设为可选,否则编译报错。应改用包装类型,并提供默认值处理逻辑:
@GetMapping("/products/{category}/{page}")
public String listProducts(
@PathVariable String category,
@PathVariable(required = false) Integer page) {
int pageNum = (page != null) ? page : 1;
// ...
}
路径变量含特殊字符(如点号、斜杠)
默认情况下,Spring 会把 . 当作路径分隔符截断(例如 /file/{name}.txt 中 {name} 只取到 abc,不包括 .txt)。解决方法:
- 使用正则表达式限定占位符匹配范围:
@GetMapping("/file/{name:.+}")——.+表示匹配任意非空字符(含点号) - 若需匹配带斜杠的路径(如
/docs/{path:/.*}),也用正则:@GetMapping("/docs/{path:/.*}"),此时path可接收a/b/c.md
注意:正则中的 / 在 URL 中需编码为 %2F 才能被正确识别(取决于 Web 容器配置),生产环境建议避免过于复杂的路径嵌套。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










