背景
新上线了一个需求后,发现时不时的有一些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;
本篇文章如有帮助到您,请给「翎野君」点个赞,感谢您的支持。