Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request p

报错信息为: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

我的解决方法:在类上添加@Service注解

原因为:我在一个工具类中引用了dao层的方法,添加了@Autowired,还是报了上面 的错误。

 

分析:

很熟悉的一个错误,空指针,但是出现这个错误的原因却是有各种花样,有的是因为传参为空,有的是因为查询的接口为空等等都可能导致这个问题,但是我今天在遇到这个错误后,在排除了各种之前所遇到的空指针的错误之后,我崩溃了。。。所有的原因都不对,所以我决定找度娘问个清楚。不出我所料度娘告诉我:小伙子,这个问题啊,需要你动用自己聪明的大脑袋去解决哟!。。。,但是,天无绝人之路,度娘告诉我和@Autowired注解有关,这一下子激发了我那聪明又多发的大脑袋,于是乎如神来之笔一般我在此类上加上了@Service注解,紧接着问题就得以解决了。哈哈哈。

好了,说点正经的,遇到这个问题时我的确以为是空指针的错误,但是仔细的那么一看一排查,发现此事并非那么简单。

Spring MVC具有一个依赖注入的优点,可以通过org.springframework.beans.factory.annotation.Autowired注解类型将依赖注入一个属性(成员变量)或方法

在Spring MVC中,为了能被作为依赖注入,类必须使用org.springframework.stereotype.Service注解类型注明为@Service(一个服务)。另外,还需要在配置文件中使用<context:component-scan base-package="基本包"/>元素来扫描依赖基本包。(引用https://blog.csdn.net/qq_25819725/article/details/79878421)。

由此得出光用@Autowired将依赖注入是远远不够滴,我们还需要@Service的配合来将此类注册到spring容器中,这样才能被扫描到。

还有,我出现这个问题的究极原因是,我是在一个工具类中出现的此问题。。。唉!一言难尽啊。

最后一个事情,如果你遇到的错误真的由于参数或结果为空的情况导致的,请忽略我这些废话,赶紧的去排查你的参数和结果集。

这是我出现这个问题后的解决方式与理解,还是没理解到一个更深的层次,如有理解出错的地方,还请大佬们留言指出,欢迎留言。加油,奥~~~li~~给~

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值