非空注解@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;

 

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

首发链接:https://www.cnblogs.com/lingyejun/p/17410583.html

posted @ 2023-05-17 22:47  翎野君  阅读(92)  评论(0编辑  收藏  举报