前段时间提交代码审核,同事提了一个代码规范缺陷:参数校验应该放在controller层。到底应该如何做参数校验呢?
| Controller层 VS Service层
去网上查阅了一些资料,一般推荐与业务无关的放在Controller层中进行校验,而与业务有关的放在Service层中进行校验。
那么如何将参数校验写的优雅美观呢,如果都是if - else,就感觉代码写的很low,还好有轮子可以使用。
| 常用校验工具类
使用Hibernate Validate
引入依赖
常用注解说明
使用姿势
需要搭配在Controller中搭配@Validated或@Valid注解一起使用,@Validated和@Valid注解区别不是很大,一般情况下任选一个即可,区别如下:
虽然@Validated比@Valid更加强大,在@Valid之上提供了分组功能和验证排序功能,不过在实际项目中一直没有用到过。
Hibernate-validate框架中的注解是需要加在实体中一起使用的。
~定义一个实体:
说明:message字段为不符合校验规则时抛出的异常信息。
~Controller层中的方法:
说明:在校验的实体DataSetSaveVO旁边添加@Valid或@Validated注解。
使用commons-lang3
引入依赖
常用方法说明
测试代码
| 自定义注解
当上面的方面都无法满足校验的需求以后,可以考虑使用自定义注解。如何写一个自定义注解,可以参考本文作者之前的文章:《Spring自定义注解从入门到精通》。
领取专属 10元无门槛券
私享最新 技术干货