java中的 参数校验

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.csdn.net/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.csdn.net/sudadaipeng1/article/details/108609272
Optional使用详解https://www.cnblogs.com/superchong/p/11913137.html

guava的Preconditions

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值