问题描述
这两天在测试自己写的API时,在测试其中一个API报错,也就是下面的错误,一开始自己根据错误信息排查,怀疑是Mapper类没写@Mapper注解导致,但是检查了之后发现有写,最后我对这个API从实体类,Mapper类,Mapper.xml,service类,serviceImpl类,Controller类排查,一个个排查下来,我还是找不到问题所在,因为访问这个API的所有方法时控制台都会报错该方法调用service方法的那一行代码,也就是说在controller层调用service层时出了问题,网上查了一下,都是说service没加@Service注解,或者controller层没把service类用@Autowire注解,但是我的springboot项目是用了dubbo,所以注解是用的@Reference,也就是我注解也有写,而且其他API这么用也没问题,就只有这个有问题,就很奇怪。最后我想到一个点,就是我注解没写错,但是idea给我自动导入的包导错导致。因为之前也遇到这种情况,我的注解对应导入的是dubbo下的包,但是给我自动导入的是jdk下的包,于是我把有问题的API导入的包和没问题的对比发现,果然是这个问题。
这个是自动给我导入的包
import jdk.nashorn.internal.ir.annotations.Reference;
这个才是我真正要的dubbo下的包
import com.alibaba.dubbo.config.annotation.Reference;
我的报错信息
浏览器页面报错信息:This application has no explicit mapping for /error, so you are seeing this as a fallback.
IDEA控制台报错信息:java.lang.NullPointerException: null
2020-05-21 16:46:46.900 ERROR 26012 --- [nio-8090-exec-2] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is java.lang.NullPointerException] with root cause
java.lang.NullPointerException: null
postman测试报错 “error”: “Internal Server Error”,
“exception”: “java.lang.NullPointerException”,
总结:
使用IDEA自动导包时,一定一定要注意看他自动导入的是否是正确的包,特别是使用dubbo时更需要注意这个问题,不然后面都不知道自己错在哪里,写这篇记录一下坑,希望对你有用,如果帮你解决了bug,希望能点赞支持下。