Spring项目中自定义注解校验参数
为什么要使用注解的方式校验参数
在Web项目中参数校验是一项非常重要的事情,只有合法的符合我们程序逻辑的参数才能被正常执行。哪些不合法的参数如果被提交到程序的业务逻辑的时,可能会出现系统错误或者是数据混乱。
在以往的项目中我们大多数还是使用的 if 判断的方式逐个校验参数。通常我们会把这些校验参数的代码直接耦合在 service层或者 controller层中。这样就会出现下面的这么一个例子,其实真实的反应业务逻辑的代码就只有最后几行,然而这个方法却十分的臃肿:
@RestController
@RequestMapping("/person")
public class PersonController {
@Autowired
private PersonService personService;
@PostMapping
public String addPerson(@RequestBody AddPersonReq req){
if (StringUtils.isEmpty(req.getName())){
return "fasle";
}
if (StringUtils.isEmpty(req.getEmail())){
return "fasle";
}
if (req.getAge() == null){
return "fasle";
}
if (req.getAge()<0 || req.getAge()>110){
return "fasle";
}
// 还有一些参数需要校验
...
personService.add(req);
return "true"