1. 研究javax.validation.constraints.NotNull运行原理
1.1. 源码跟进
- 为了找到
NotNull
到底是在哪里被处理,我先打印一个错误信息,根据错误信息的关键字,我首先找到的是这个地方,可以看到是webmvc包,可以理解,毕竟是通过接口请求并拦截的,需要经过webmvc
- 接下来要探究这句话是怎么产生的了,追溯body值得来源,发现最终捕获异常的地方在
DispatcherServlet
类的如下方法,感觉快要找到了,进入handle方法吧
- 继续往里面找,找到了抛
MethodArgumentNotValidException
异常的地方,可以看到验证参数的方法就是validateIfApplicable