在 Java 中,校验注解的作用是为了验证数据的有效性,保证数据的准确性和安全性。其中 @Valid、@Validated 和 @PathVariable 是三种常用的校验注解,下面让我们来深入了解一下它们的使用方法和区别。
@Valid
@Valid 注解基于 JSR-303 规范,需要结合 Hibernate Validator 等校验框架实现。主要用于校验 JavaBean 对象中的字段或集合中的元素。与其他校验注解不同,@Valid 仅能用于对象类型,不能用于基本数据类型。
使用 @Valid 做数据验证的步骤如下:
- 引入依赖:需要引入 Hibernate Validator 的依赖。
- 在需要校验的 JavaBean 中添加注解:在需要校验的字段上添加对应校验注解。
- 在 Controller 类中添加注解:在需要校验的 JavaBean 参数前添加 @Valid 注解即可。
示例代码:
// Model 示例
public class User {
@NotNull(message = "用户名不能为空")
@Size(min = 6, max = 20, message = "用户名长度应在6-20个字符之间")
private String username;
@NotNull(message = "密码不能为空")
@Size(min = 6, max = 20, message = "密码长度应在6-20个字符之间")
private String password;
}
// Controller 示例
@RestController
public class UserController {
@PostMapping("/user")
public void addUser(@Valid @RequestBody User user) {
// do something
}
}
@Validated
@Validated 注解基于 JSR-303 规范和 Spring 框架,也可以用于校验基本数据类型,支持分组校验和级联校验。主要用于校验 Controller 层的参数。
使用 @Validated 做数据验证的步骤如下:
- 在需要校验的 JavaBean 中添加注解:在需要校验的字段上添加对应校验注解。
- 在 Controller 类中添加注解:在需要校验的 JavaBean 参数前添加 @Validated 注解即可。
- 可以使用 groups 参数指定校验的分组,同时可以使用 @NotNull 和 @NotBlank 等注解对基本类型进行校验。
示例代码:
@RestController
@RequestMapping("/user")
@Validated
public class UserController {
@PostMapping("/{uid}")
public void updateUser(@PathVariable("uid") @NotNull(message = "用户ID不能为空") Long uid,
@RequestBody @Validated(value = User.Update.class) User user) {
// do something
}
public interface Update {}
}
public class User {
@NotBlank
private String name;
@NotNull(groups = Update.class, message = "用户ID不能为空")
private Long id;
}
@PathVariable
@PathVariable 是 Spring MVC 中的注解,用于获取 URL 中的参数值进行处理,可以用于获取 RESTful 风格路径中的参数。
示例代码:
@RestController
@RequestMapping("/user")
public class UserController {
@GetMapping("/{uid}")
public User getUser(@PathVariable("uid") Long uid) {
// 通过 uid 查询用户信息
return user;
}
}
以上就是 Java 中三种校验注解的详细攻略,希望对你有所帮助!
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java中的三种校验注解的使用(@Valid,@Validated和@PathVariable) - Python技术站