非空注解@NonNull与@NotNull使用错误导致传参为空时报NPE

简介: 非空注解@NonNull与@NotNull使用错误导致传参为空时报NPE

背景

新上线了一个需求后,发现时不时的有一些NullPointerException报出来,跟踪后发现都是在一个地方报出来的


org.springframework.beans.BeanInstantiationException: Failed to instantiate [net.lingyejun.mall.domain.book.req.BookInfoReqDto]: Constructor threw exception; nested exception is java.lang.NullPointerException: bookId


根据错误的堆栈信息,找到对应的类,第一眼没有返现什么问题,但是错误是由于构造方法内部报出来的,所以我们查看编译后的.class文件,发现这个类的构造方法,居然是参数为空就直接抛出


NullPointerException


public BookInfoReqDto(@NonNull Long bookId){
    if(bookId == null){
        throw new NullPointerException("bookId");
    }else {
        this.bookId = bookId;
    }
}


原来是有人用错注解了


@NonNull使用错注解了,应该用@NotNull,注意二者所源自的包是不同的。


import lombok.NonNull;import javax.validation.constraints.NotNull;


本篇文章如有帮助到您,请给「翎野君」点个赞,感谢您的支持。


目录
相关文章
|
SQL
SpringCloud - Feign调用返回对象不为null,但属性全为null
SpringCloud - Feign调用返回对象不为null,但属性全为null
1222 0
|
6月前
判断Object对象是否为空
判断Object对象是否为空
|
4月前
|
前端开发 数据库
返回参数不用实体类,用map返。resultType=“Map“,以及使用map不返回空的值解决办法,
返回参数不用实体类,用map返。resultType=“Map“,以及使用map不返回空的值解决办法,
40 1
|
4月前
|
SQL XML Java
mybatis元素类型为 "resultMap" 的内容必须匹配 "(constructor?,id *,result*,association报错解决
mybatis元素类型为 "resultMap" 的内容必须匹配 "(constructor?,id *,result*,association报错解决
55 0
|
6月前
|
Java 开发工具 git
Optional进行优雅非空判断
Optional进行优雅非空判断
37 0
|
9月前
|
SQL Java 数据库连接
详解Mybatis查询之resultType返回值类型问题【4种情况】
详解Mybatis查询之resultType返回值类型问题【4种情况】
|
10月前
|
JavaScript 编译器 开发者
TS类型断言
TypeScript中的类型断言是一种将变量或表达式的类型强制转换为开发者指定的类型的方式。可以使用尖括号(<>)语法或者as语法进行类型断言。
|
Java Spring
自定义注解判断参数为空
使用Spring的 @Valid和@Validated不好嘛,干嘛要自己造轮子呢.......
|
数据库
你还在使用if来判断是否实体类或者某个属性为空吗?教你使用Assert.notNull()[断言]
你还在使用if来判断是否实体类或者某个属性为空吗?教你使用Assert.notNull()[断言]
254 1
你还在使用if来判断是否实体类或者某个属性为空吗?教你使用Assert.notNull()[断言]
|
SQL 缓存 监控
面试题:对NotNull字段插入Null值 有啥现象?
今天我要跟你分享的话题是:“对NotNull字段插入Null值有啥现象?”
136 0