springboot 自带注解(最下)能够满足日常大部分需求使用,如果在开发中需要自己自定义注解的话,操作姿势如下:
**
* 需要在验证类 或者方法上 添加 @Valid 注解 用声明参数验证
*/
public String inserUser(@RequestBody @Valid Person person) {
实体类:
/**
* 需要验证的参数 后面可以自定义错误提示
* 创建ValidationMessages.properties 文件(可以被自动扫描到)
* 错误提示可以写在该文件中
*/
@CheckValueValidation(message = "{NotNull.validation.Message}")
创建验证:
/**
* Auther: ruoyu
* Date: 19-2-19
* Description: 自定义参数验证注解
*/
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Constraint(validatedBy = CheckValueValidation.CheckValueConstraint.class)
// 重要! 新建约束注解声明 并创建 验证逻辑类(可以多个 如验证String Integer)
// CheckValueConstraint 这里为了简化 可以使用内部类实现
public @interface CheckValueValidation {
String message() default "参数为空";
Class<?>[] groups() default {};
Class<? extends Payload>[] payload() default {};
class CheckValueConstraint implements ConstraintValidator<CheckValueValidation, String> {
@Override
public void initialize(CheckValueValidation constraintAnnotation) {
}
/**
* 参数验证逻辑
* @param value 验证的参数
* @param context
* @return
*/
@Override
public boolean isValid(String value, ConstraintValidatorContext context) {
return StringUtils.isNotBlank(value);
}
}
}
配置文件ValidationMessages.properties:
简单点也可以message=“名称不能为空”
#参数验证错误信息提示
NotNull.validation.Message=名称不能为空
Controller 使用
springboot 自带验证注解
@null 验证对象是否为空
@notnull 验证对象是否为非空
@asserttrue 验证 boolean 对象是否为 true
@assertfalse 验证 boolean 对象是否为 false
@min 验证 number 和 string 对象是否大等于指定的值
@max 验证 number 和 string 对象是否小等于指定的值
@decimalmin 验证 number 和 string 对象是否大等于指定的值,小数存在精度
@decimalmax 验证 number 和 string 对象是否小等于指定的值,小数存在精度
@size 验证对象(array,collection,map,string)长度是否在给定的范围之内
@digits 验证 number 和 string 的构成是否合法
@past 验证 date 和 calendar 对象是否在当前时间之前
@future 验证 date 和 calendar 对象是否在当前时间之后
@pattern 验证 string 对象是否符合正则表达式的规则
@Email 验证邮箱
实际例子:
@size (min=3, max=20, message=“用户名长度只能在3-20之间”)
@size (min=6, max=20, message=“密码长度只能在6-20之间”)
@pattern (regexp="[a-za-z0-9._%±]+@[a-za-z0-9.-]+\.[a-za-z]{2,4}", message=“邮件格式错误”)
@Length(min = 5, max = 20, message = “用户名长度必须位于5到20之间”)
@Email(message = “比如输入正确的邮箱”)
@NotNull(message = “用户名称不能为空”)
@Max(value = 100, message = “年龄不能大于100岁”)
@Min(value= 18 ,message= “必须年满18岁!” )
@AssertTrue(message = “bln4 must is true”)
@AssertFalse(message = “blnf must is falase”)
@DecimalMax(value=“100”,message=“decim最大值是100”)
@DecimalMin(value=“100”,message=“decim最小值是100”)
@NotNull(message = “身份证不能为空”)
@Pattern(regexp="^(\d{18,18}|\d{15,15}|(\d{17,17}[x|X]))$", message=“身份证格式错误”)