对某个多字段的实体进行验证的话,会写很多麻烦而且冗余的代码
一、在业务逻辑层验证:
我们可能都熟悉在Controller
层进行参数验证,在业务逻辑层进行验证可能使用不多,在我写外放机构交易接口的时候遇到一个问题,首先来说说我这个接口的设计,我的接口请求路径只有一个,但是可以处理不同的业务,根据机构传递的业务码判断业务类型,进行不同处理,机构请求这个接口,在Controller
层首先会进行数据校验,但是校验的仅仅是暴露的不影响数据安全的数据,校验通过我需要将加密字段中的参数取出,根据机构私钥进行解密,获取到数据,但是这些数据你还要进行校验是否合法,这就需要在业务逻辑层进行验证
(1)、首先定义一个实体对象,在参数上使用验证注解
(2)、在业务层接口中的方法参数上使用@Valid
注解
(3)、在接口实现类添加@Validation
注解
(4)、捕获全局ConstraintViolationException
异常
(5)、Controller
方法上并为添加@Valid
注解
请求测试:
建议以后将数据验证全部放到业务层。