Java参数校验工具validation
validation可以做以下事情
- validation可以抛出统一的参数校验异常,方便定位问题
- 编程简单,只需要注解就能搞定,不需要编写大量的代码
validation提供以下注解:
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIn5GcsQXYtJ3bm9CXldWYtlWPzNXZj9mcw1ycz9WL49zdNlXVt10aCRlToJEVNtmVE9kaKd0T3lEVPl3Y650aWpHTzY1VhJTO5NGb4dVYtlzQNRTQE9kNVRVT1dGRNlHND90dFpGT10keMZ3bENGMShUYvwlbj5yZtlmbkN3YuQnclZnbvN2Ztl2Lc9CX6MHc0RHaiojIsJye.jpg)
注解 | 属性值类型 | 功能 |
---|---|---|
@AssertFalse | Boolean、boolean | 被注释的元素必须为false |
@AssertTrue | Boolean、boolean | 被注释的元素必须为true |
@DecimalMax(value) | BigDecimal、BigInteger、String、byte、short、int、long及对应类型的封装类 | 被注释的元素必须是一个数字,其值必须大于等于指定的最大值 |
@DecimalMin(value) | BigDecimal、BigInteger、String、byte、short、int、long及对应类型的封装类 | 被注释的元素必须是一个数字,其值必须小于等于指定的最小值 |
@Digits(integer, fraction) | BigDecimal、BigInteger、String、byte、short、int、long及对应类型的封装类 | 被注释的元素必须是一个数字,其值必须在可接受范围内 |
String | 被注释的元素必须是一个邮箱格式的字符串 | |
@Future | java.util.Date, java.util.Calendar; | 被注释的元素必须是一个将来的日期 |
@FutureOrPresent | java.util.Date, java.util.Calendar; | 被注释的元素必须是一个将来或者当前的日期 |
@Max | BigDecimal、BigInteger、byte、short、int、long及对应类型的封装类 | 被注释的元素必须是一个数字,其值必须大于等于指定的最大值 |
@Min | BigDecimal、BigInteger、byte、short、int、long及对应类型的封装类 | 被注释的元素必须是一个数字,其值必须小于等于指定的最小值 |
@Negative | 被注释的元素必须是一个负数 | |
@NegativeOrZero | 被注释的元素必须是一个负数或0 | |
@NotBlank | String | 被注解的元素值是否为非null,并且去空格之后的length大于0。与@NotEmpty的区别在于,@NotBlank只能注解字符串,并且忽略结尾空格。 |
@NotEmpty | String、Collection、Map、arrays | 被注解的元素值是否为非null或空集合。 |
@NotNull | 任意类型 | 被注释的元素不能为null |
@Null | 任意类型 | 被注释的元素必为null |
@Past | java.util.Date, java.util.Calendar; | 被注释的元素必须是一个过去的日期 |
@PastOrPresent | java.util.Date, java.util.Calendar; | 被注释的元素必须是一个过去或者当前的日期 |
@Pattern(regexp) | String | 被注释的元素必须满足指定的正则表达式 |
@Positive | 被注释的元素必须是一个正数 | |
@PositiveOrZero | 被注释的元素必须是一个正数或0 | |
@Size(min=, max=) | String、Collection、Map、arrays | 被注释的元素值大小介于min和max(包含)之间。 |
public class ValidateVo {
@NotBlank(message = "没有名字")
private String name;
@Email(message = "邮箱格式不对")
private String email;
@Size(max=16, min=6, message = "密码位数不对")
private String password;
@Positive(message = "年龄不对")
private int age;
}