Java Validation方法入参校验实现过程
前言
在实际的开发工作中,对于传入的参数进行校验非常重要,对于一个好的程序员来说,必须具备对参数进行验证的能力。Java提供了校验的解决方案,可以快速开发和验证传递给方法的数据。
步骤
1. 引入Validation框架
在你的Maven项目的POM文件中添加以下依赖:
<dependency>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
<version>2.0.1.Final</version>
</dependency>
2. 编写传入参数的Bean
假设你要验证的方法入参是一个User对象,那么你需要对这个User对象进行参数校验,需要给这个User类添加验证条件,如下所示:
public class User {
@NotNull(message = "用户名不能为空")
private String name;
@NotNull(message = "密码不能为空")
@Size(min = 6, message = "密码长度不能小于6位")
private String password;
@Email(message = "邮箱名不正确")
private String email;
// ... getter, setter 方法
}
上面的代码中,我们对用户名、密码、邮箱三个属性都添加了校验条件,分别对应了非空校验、字符长度、邮箱名格式。
3. 编写需要验证的方法
假设你有一个userService的类,其中有一个registerUser方法需要验证入参:
public class UserService {
public void registerUser(@Valid User user) {
//TODO 注册用户的逻辑
}
}
在registerUser方法中,使用@Valid注解来开启对User对象的验证。
4. 编写Controller
最后,在Controller中使用此userService注册用户并传入user对象,如下所示:
@RestController
public class UserController {
@Autowired
private UserService userService;
@PostMapping("/users")
public void registerUser(@RequestBody @Valid User user) {
userService.registerUser(user);
}
}
在上面的代码中,我们使用了Spring的@RestController注解开发的注册接口,@RequestBody注解代表请求体映射到方法参数,并开启了@Valid注解,以校验传入数据。
示例
我们来看两个示例
示例一
如果我们调用以下方法:
public void registerUser(@Valid User user) {
//TODO 注册用户的逻辑
}
User user = new User();
userService.registerUser(user);
当user对象为空时,会在验证过程中触发ConstraintViolationException异常,抛出的异常信息如下:
javax.validation.ConstraintViolationException: registerUser.user: 用户名不能为空,密码不能为空
我们可以看到,校验器抛出了校验用户名不能为空、密码不能为空的异常支持第一条规范。
示例二
如果我们调用以下方法:
public void registerUser(@Valid User user) {
//TODO 注册用户的逻辑
}
User user = new User();
user.setName("pandora");
user.setPassword("123");
user.setEmail("123456@qq.com");
userService.registerUser(user);
当user对象不符合规范时,会在验证过程中触发ConstraintViolationException异常,抛出的异常信息如下:
javax.validation.ConstraintViolationException: registerUser.user.password: 密码长度不能小于6位,registerUser.user.email: 邮箱名不正确
我们可以看到,校验器抛出了校验密码长度、邮箱格式正确性的异常,支持了第二条规范。
总结
本篇文章详细介绍了Java Validation方法入参校验的实现过程,包括了Validation框架引入、编写传入参数的Bean、编写需要验证的方法和Controller的使用,并使用了两个示例进行了验证。有了这篇文章,相信大家在Java开发中验证参数时会更加轻松!
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java Validation方法入参校验实现过程解析 - Python技术站