JAVA validation的使用

validation介绍

validation 在Java中运用最早在2009 年,Java 官方提出了 Bean Validation 规范,而后经历了JSR303、JSR349、JSR380 三次标准的更迭,发展到了 2.0 。

Bean Validation只提供规范,不提供具体的实现。因此实际使用过程,常用的是Hibernate validation和Spring Validator校验机制。

@Valid和 @Validated

  • @Valid 注解,是 Bean Validation 所定义,主要是使用Hibernate validation校验机制的时候使用;可以添加在普通方法、构造方法、方法参数、方法返回、成员变量上,表示它们需要进行约束校验。因为可以添加在成员变量,所以支持嵌套校验
  • @Validated 注解,是 Spring Validation 所定义,主要是使用Spring Validator校验机制的时候使用;可以添加在类、方法参数、普通方法上,表示它们需要进行约束校验。同时,@Validated 有 value 属性,支持分组校验

常见的注解

在javax.validation.constraints 包下,定义了一系列的约束(constraint)注解,一共 22 个注解。

空和非空检查

  • @NotBlank:只能用于字符串不为 null ,并且字符串 .trim() 以后 length 要大于 0 。
  • @NotEmpty:集合对象的元素不为 0 ,即集合不为空 。
  • @NotNull:不能为 null 。
  • @Null:必须为 null 。

数值检查

  • @DecimalMax(value):被注释的元素必须是一个数字,其值必须小于等于指定的最大值。
  • @DecimalMin(value):被注释的元素必须是一个数字,其值必须大于等于指定的最小值。
  • @Digits(integer, fraction):被注释的元素必须是一个数字,其值必须在可接受的范围内。
  • @Positive:判断正数。
  • @PositiveOrZero:判断正数或 0 。
  • @Max(value):该字段的值只能小于或等于该值。
  • @Min(value):该字段的值只能大于或等于该值。
  • @Negative:判断负数。
  • @NegativeOrZero:判断负数或 0 。

Boolean 值检查

  • @AssertFalse:被注释的元素必须为 true 。
  • @AssertTrue:被注释的元素必须为 false 。

长度检查

  • @Size(max, min):检查字段的 size 是否在 min 和 max 之间,可以是字符串、数组、集合、Map 等。

日期检查

  • @Future:被注释的元素必须是一个将来的日期。
  • @FutureOrPresent:判断日期是否是将来或现在日期。
  • @Past:检查该字段的日期是在过去。
  • @PastOrPresent:判断日期是否是过去或现在日期。

其它检查

  • @Email:被注释的元素必须是电子邮箱地址。
  • @Pattern(value):被注释的元素必须符合指定的正则表达式。


 

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Java Validation 是一个用于数据验证的框架,它提供了一种简单和灵活的方法来验证 Java 对象。下面是 Java Validation使用方式: 1. 引入依赖 在 pom.xml 文件中添加以下依赖: ```xml <dependency> <groupId>javax.validation</groupId> <artifactId>validation-api</artifactId> <version>2.0.1.Final</version> </dependency> <dependency> <groupId>org.hibernate.validator</groupId> <artifactId>hibernate-validator</artifactId> <version>6.1.5.Final</version> </dependency> ``` 2. 创建验证规则 在需要验证的 Java 对象中,使用注解来指定验证规则,例如: ```java public class User { @NotNull(message = "用户名不能为空") private String username; @NotBlank(message = "密码不能为空") private String password; @Email(message = "邮箱格式不正确") private String email; // getters and setters } ``` 上述代码中,我们使用了 `@NotNull`、`@NotBlank` 和 `@Email` 注解来指定验证规则。 3. 进行验证 在需要对对象进行验证的地方,例如 Controller 中,使用 `javax.validation.Validator` 类的 `validate` 方法进行验证,例如: ```java @RestController public class UserController { @Autowired private Validator validator; @PostMapping("/user") public ResponseEntity<?> createUser(@RequestBody @Valid User user) { // 如果验证不通过,将抛出 ConstraintViolationException 异常 Set<ConstraintViolation<Object>> violations = validator.validate(user); if (!violations.isEmpty()) { List<String> errorMessages = new ArrayList<>(); for (ConstraintViolation<Object> violation : violations) { errorMessages.add(violation.getMessage()); } return ResponseEntity.badRequest().body(errorMessages); } // 验证通过,进行业务逻辑处理 return ResponseEntity.ok().build(); } } ``` 上述代码中,我们使用了 `@Valid` 注解来启用数据验证,使用 `validator.validate(user)` 方法对对象进行验证,如果验证不通过,将抛出 `ConstraintViolationException` 异常,我们将异常信息封装成错误响应体返回。 以上就是 Java Validation使用方式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码农小石头

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值