springboot使用Hibernate Validator进行后端效验
1. 导入依赖
如果想在Spring Boot中使用Hibernate Validator进行后端效验,可以在pom.xml中添加以下依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>
2. @Validated注解
该依赖会自动引入Hibernate Validator的依赖,同时也会自动开启校验功能。在需要校验的类或方法上使用@Validated注解即可开启校验。例如:
@PostMapping("/user")
public String addUser(@Validated @RequestBody User user, BindingResult bindingResult) {
// ...
}
3. @Validated 和 @Valid的区别
@Validated和@Valid都是Hibernate Validator中常用的注解,但它们的区别在于作用范围不同。
@Validated注解可以用于类、方法和参数上,它表示当前类或方法是被校验的,或者指定当前参数是被校验的。通常用于类或方法级别的校验,例如:
@RestController
@Validated
public class UserController {
@PostMapping("/user")
public String addUser(@Validated @RequestBody User user, BindingResult bindingResult) {
// ...
}
}
在上面的例子中,@Validated注解表示UserController是被校验的类,@RequestBody注解表示User对象是被校验的参数。
@Valid注解只能用于方法和参数上,它表示当前参数是被校验的。通常用于方法级别的校验,例如:
public class UserService {
public void saveUser(@Valid User user) {
// ...
}
}
在上面的例子中,@Valid注解表示User对象是被校验的参数。
总之,@Validated注解作用范围更广,可以用于类、方法和参数上,而@Valid注解只能用于方法和参数上。
3. 配置文件 (可选)
需要注意的是,如果要使用@Validated注解,需要在Spring Boot的配置文件中添加以下配置:
spring.mvc.throw-exception-if-no-handler-found=true
spring.resources.add-mappings=false
以上就是使用Hibernate Validator进行后端效验的基本步骤和配置方法。
5. 常用注解
Hibernate Validator是一个实现了Java Bean Validation API规范的校验框架,可以通过注解的方式来进行校验。以下是一些常用的注解以及对它们的解释。
- @NotNull:校验对象不能为空
- @Size:校验对象的大小是否在指定范围内
- @Email:校验对象是否为合法的邮箱格式
- @Pattern:校验对象是否匹配指定的正则表达式
- @Min:校验对象是否大于等于指定的值
- @Max:校验对象是否小于等于指定的值
- @DecimalMin:校验对象是否大于等于指定的值,该值可以是小数
- @DecimalMax:校验对象是否小于等于指定的值,该值可以是小数
- @Digits:校验对象是否为数字,并且整数部分和小数部分的位数是否在指定范围内
- @Past:校验对象是否为一个过去的时间
- @Future:校验对象是否为一个未来的时间
- @AssertTrue:校验对象是否为true
- @AssertFalse:校验对象是否为false
以上就是一些常用的Hibernate Validator注解,可以根据需要选择使用。
6. 小案例
在使用Spring Boot时,我们可以使用Hibernate Validator来进行后端的效验。Hibernate Validator是一个实现了Java Bean Validation API规范的校验框架,可以通过注解的方式来进行校验。下面是一个简单的例子:
public class User {
@NotNull(message = "用户名不能为空")
private String username;
@Size(min = 6, max = 20, message = "密码长度必须为6到20位")
private String password;
@Email(message = "邮箱格式不正确")
private String email;
// 省略getter和setter方法
}
在上面的例子中,我们使用了三个注解来进行校验:
- @NotNull:校验对象不能为空
- @Size:校验对象的大小是否在指定范围内
- @Email:校验对象是否为合法的邮箱格式
如果校验不通过,会抛出ConstraintViolationException异常,我们可以通过捕获该异常来进行处理。
@PostMapping("/user")
public String addUser(@Validated @RequestBody User user, BindingResult bindingResult) {
if (bindingResult.hasErrors()) {
List<ObjectError> allErrors = bindingResult.getAllErrors();
StringBuilder sb = new StringBuilder();
for (ObjectError error : allErrors) {
sb.append(error.getDefaultMessage()).append(",");
}
return sb.toString().substring(0, sb.length() - 1);
}
// 保存用户信息
return "success";
}
在上面的例子中,我们使用了@Validated注解来开启校验,如果校验不通过,会将错误信息存储到BindingResult对象中,我们可以通过该对象来获取所有的错误信息。
以上就是Spring Boot中使用Hibernate Validator进行后端效验的简单例子,希望对大家有所帮助。
7. 总结
本文介绍了在Spring Boot中使用Hibernate Validator进行后端效验的基本步骤和配置方法。需要导入依赖,在需要校验的类或方法上使用@Validated注解即可开启校验。@Validated注解可以用于类、方法和参数上,而@Valid注解只能用于方法和参数上。常用的注解包括@NotNull、@Size、@Email、@Pattern、@Min、@Max、@DecimalMin、@DecimalMax、@Digits、@Past、@Future、@AssertTrue、@AssertFalse等。最后给出了一个简单的例子,展示了如何使用Hibernate Validator进行后端效验。