手记

【金秋打卡】第1天 Java全栈工程师-参数校验

课程名称:Java全栈工程师

课程章节:阶段二:Java SpringBoot API打造高级电商业务后端

课程讲师:7七月

课程内容:JSR303对校验的应用


JSR(Java Spectification Request,Java规范请求)作为正式规范文档,描述被提议加入到 Java 体系中的规范和技术

  • JSR303 — Bean Validator 1.0 — Hibernate Validator 4.3.1.Final

  • JSR349 — Bean Validator 1.1 — Hibernate Validator 5.1.1.Final

  • JSR380 — Bean Validator 2.0 — Hibernate Validator 6.0.1.Final

Spring Validator 在 Hibernate Validator 基础上进行二次封装,以满足 Spring 环境中更简单、高效地对数据进行验证


优势:校验的目的也是为了检验传参的合法性,将校验的代码从 Controller 或 Service 中分离出,代码不会看起来很臃肿,可读性更强,也更优雅


常用注解:

  • 空值类

    • @Null

    • @NotNull:@NotNull(message = "用户ID不能为空")

    • @NotEmpty:@NotEmpty(message = "用户名不能为空")

    • @NotBlank:@NotBlank(message = "密码不能为空")

  • 范围类:

    • @Length:min:最小长度、max:最大长度

    • @Min:@Min(value = 18, message = "年龄不能小于18岁")

    • @Max:@Max(value = 30, message = "年龄不能超过30岁")

    • @Size:@Size(min = 1, max = 30, message = "不能少于1位好友")

  • 日期类:

    • @Past:@Past(message = "日期不能为当前日期和未来日期")

  • 其他类:

    • @Email:@Email(message = "邮箱必须有效")

    • @URL

    • @AssertTrue

    • @Pattern

    • @Valid


当然,Spring Validator 不只是只有这些简单的注解,还有高级用法,如分组等,它的功能也不是局限于参数校验,还可以校验返回值、构造方法。也可以根据自己独特的业务场景自定义校验规则


使用举例:需要在 Controller 添加 @Validated 注解使之生效

  • 校验参数:在 Controller 接口需要校验的参数前,添加合适的校验注解


  • 实体校验:如果需要校验 Bean 中的 Bean,需要在关联字段加上 @Valid



课程收获

使用 Bean Validation 校验机制,对基本数据类型进行校验,方法是在实体类属性上使用注解标识校验方式,最后在 Controller 中具体方法的形参里添加 @Vlidated 注解。Bean Validation 校验有一个缺点是,我们的数据校验是在 Java 实体类里进行约束的,如果有多个处理器方法需要用到同一个实体类,那么定义在实体类属性上的校验规则就不好划分了,有的处理器只需要校验一个属性,而有的处理器需要校验多个属性,不可能为每一个处理器都创建一个实体类。一个解决的方法就是使用分组校验方式,除此之外,还可以使用 Spring 的 Validator 接口校验,它允许我们在外部指定某一对象的校验规则

0人推荐
随时随地看视频
慕课网APP