为了账号安全,请及时绑定邮箱和手机立即绑定

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

标签:
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 接口需要校验的参数前,添加合适的校验注解

    https://img1.sycdn.imooc.com//6356977600012a2719200902.jpg

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

    https://img1.sycdn.imooc.com//63569896000194cf19200903.jpg


课程收获

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

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
JAVA开发工程师
手记
粉丝
0
获赞与收藏
0

关注作者,订阅最新文章

阅读免费教程

  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消