搭建属于自己的类属性(VO,DTO,PO,Entity等)校验
本思路使用如果会使用了,你可以在各个项目中整体处理对象,校验对象的属性
内容
采用 springboot 的 Validation,导入依赖
1 | <dependency> |
如果你学习过 springboot 的 Validation,相信你知道,所谓的校验只是在类的属性上添加一个注解。但是当你真正使用的时候发现无从下手,虽然我们在实体(后续类的属性统称为实体)中添加了对应的注解,但是接下里该做什么。启动项目,然后调用接口创建实体对象,然后发现报错了。而且报错是异常处理报错 MethodArgumentNotValidException
,这个报错是到了 java 异常中的。
本章接下里内容包括如果把这些java异常统一处理,使我们调用接口创建实体对象,如果没有满足校验规则,返回校验规则的 msg。
统一结果返回
在开始之前,我说一下。在接口调用中我们需要定义一个返回的 VO。这里总共创建了两个类和一个枚举,分别是通用的响应对象VO类,统一的成功和失败的处理方法的类,接口响应状态码的枚举。
通用的响应对象VO类:
1 |
|
统一的成功和失败的处理方法的类:
1 | /** |
接口响应状态码的枚举:
1 |
|
### 统一异常处理
统一异常处理的必要性体现在保持代码的一致性、提供更清晰的错误信息、以及更容易排查问题。通过定义统一的异常处理方式,确保在整个应用中对异常的处理保持一致,减少了重复编写相似异常处理逻辑的工作,同时提供友好的错误信息帮助开发者和维护人员更快地定位和解决问题,最终提高了应用的可维护性和可读性。
定义统一的异常类
我们需要定义服务中可能抛出的自定义异常类。这些异常类可以继承自RuntimeException
,并携带有关异常的相关信息。即可理解为局部异常,用于特定的业务处理中异常。手动埋点抛出。
1 | /** |
2.异常处理器
1 |
|
统一属性注解校验
这里采用Vo类 UserCreateRequestVO
举例,本节有两个类,一个为Vo类,一个是controller接口调用类。
Vo类:
1 | /** |
controller接口调用类:
1 |
|
测试及结果
调用方法
1 | POST http://{{host}}/user/create |
返回结果:
1 | { |
看到这个结果表示我们的类校验生效了
如果想要项目统一校验前端返回过来的VO,我们可以采用这种方法来处理