@PathVariable介绍
@PathVariable是Spring框架中的一个注解,主要用于处理RESTful风格URL中的路径变量。在RESTful接口设计中,我们经常将资源的ID或者其他标识信息直接放在URL路径中,而不是作为查询参数。@PathVariable注解使得控制器方法能够轻松地从URL中提取这些变量值,并将其绑定到方法参数上。
@PathVariable源码
@Target(ElementType.PARAMETER)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface PathVariable {@AliasFor("name")String value() default "";@AliasFor("value")String name() default "";boolean required() default true;}源代码截图

@PathVariable属性介绍
- value/name属性: - 这两个属性是等效的(通过@AliasFor注解标明),用于指定路径变量的名称。在URL模板中定义的路径变量名称需要与这里的值相匹配。例如,如果URL模板是/users/{userId},那么你可以使用@PathVariable("userId")来绑定它。默认情况下,如果不提供此属性值,Spring会尝试将方法参数名作为路径变量名去匹配URL中的路径段。
 
- 这两个属性是等效的(通过
- required属性: - 此属性指示路径变量是否为必须的,默认值为true。如果设置为true,则在请求的URL中必须包含对应的路径变量,否则Spring MVC会认为没有找到合适的处理器方法。如果设置为false,则该路径变量是可选的,但这在实际应用中较少见,因为通常路径变量是RESTful接口设计中不可或缺的部分。
 
- 此属性指示路径变量是否为必须的,默认值为
@PathVariable注解使用场景
-  使用场景:当 URI 中包含动态部分时,如 /users/{userId},其中{userId}是动态的,你可以通过@PathVariable来获取这个值。
-  参数类型: @PathVariable可以用于方法参数,将 URI 中的变量传递给控制器。
-  类型转换:Spring MVC 会尝试将路径变量转换为方法参数的类型。例如,如果路径变量是字符串,而方法参数是整数类型,Spring 会尝试将字符串转换为整数。 
-  默认值:你可以为 @PathVariable提供一个默认值,如果路径变量不存在,将使用这个默认值。
-  URI 模板: @PathVariable通常与@RequestMapping或@GetMapping、@PostMapping等注解一起使用,这些注解定义了请求映射的 URI 模式。
-  嵌套路径变量: @PathVariable可以用于嵌套控制器方法中,以获取更深层次的路径变量。
-  占位符:在方法参数中,你可以使用 {variable}作为占位符来引用@PathVariable。
@PathVariable测试示例代码
示例代码 一
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;@RestController
@RequestMapping("/demo")
public class UserController {@GetMapping("/{userId}")public String getUserById(@PathVariable("userId") String id, @PathVariable(name = "userId", required = false) Integer optionalId) {// 使用 id 获取用户信息if (optionalId != null) {// 如果 optionalId 存在,也可以使用它进行某些操作}return "User with ID: " + id;}
}