1.if判断手动抛异常
if(name == null){
throw new RuntimeException("用户名不能为null);
}
2.使用Spring Aop验证方法参数是否合法 http://www.cnblogs.com/yhtboke/p/5749053.html
3.手动验证对象
User user= new User ();
user.setName("ZhangSan");
Validator vf= Validation.buildDefaultValidatorFactory().getValidator();
Validator validator = vf.getValidator();
Set<constraintviolation> set = validator.validate(user);
validates.forEach(e -> System.out.println(e.getMessage()));
4.【JSR303参数检验+全局异常处理器】
https://blog.youkuaiyun.com/zjy15203167987/article/details/81296596
5.SpringBoot Validation参数验证
maven依赖, 用错依赖可能会导致无法生效
方式1: 支持方法单个入参+参数bean中校验
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>
方式2: 仅支持在 参数bean中校验
<dependency>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
<version>2.0.1.Final</version>
</dependency>
@Validated添加位置
1.加在controller类上对带有@NotNull的多个入参就不用加@Validated
2.是加在方法 入参字段的前面
@Validated
public class UserController {
@RequestMapping("/query")
public Object query(@NotNull(message = "名称, 不能为空!") String userName,
@NotNull(message = "年龄不能为空!") String age) {
log.info("查询user: {}", userName);
return userName;
}
@RequestMapping("/queryObj")
public Object queryObj(@Validated UserVo user) {
log.info("查询user: {}", user);
return user;
}
}
参考: SpringBoot利用validation-api如何实现参数校验 https://www.yisu.com/zixun/313421.html
Knife4j增强swagger挺不错的
//=======================================================================
去除!=null判空的5种思路 https://blog.youkuaiyun.com/sudadaipeng1/article/details/108609272
Optional使用详解https://www.cnblogs.com/superchong/p/11913137.html
guava的Preconditions