java inovationtargetexception nullpointerexception

异常信息:inovationtargetexception nullpointerexception

很奇怪的现象,当我使用spring注解注入service时,调用serviceimpl方法,debug都进不去方法,直接抛出inovationtargetexception nullpointerexception异常,自己传递的参数username,password等等明明有值不为空,怎么可能空指针,百思不得姐,,,

registerService.doRegister(username, password),刚开始一直围绕着doRegister方法,想到底哪里null,其他方法调用此方法没有一点问题,所以可以排除doRegister方法内部问题,那么,既然方法没问题,为什么不想一下调用者的问题呢,于是,测试:

if(registerService == null){
    log.info("registerService为空");
    return false;
}

控制台:registerService为空,果然,是spring注入registerService出现问题,根本没有注入成功,也就导致空指针问题了,也就导致反射调用空对象inovationtargetexception 异常了,所以,排查注入出现的问题

原来,我的WxAuthServiceImpl和QQAuthServiceImpl都实现了AuthService接口,然后注入的时候直接写成了:@Autowired AuthService authService,然后调用authService.dosomething...方法spring当然不知道该调用哪一个实现类的方法,所以报错,所以,解决办法:

  • controller类:
    @Autowired
    @Qualifier("qqAuthService")
    AuthService qqAuthService;

  • @Autowired
    @Qualifier("wxAuthService")
    AuthService wxAuthService;

  • 实现类:
    @Service("wxAuthService")
    @Service("qqAuthService")
    加上唯一注解,以便spring能够正确注入
    搞定

总结:看了很多网上的问题和解决办法,再结合自己的,很有可能就是spring注入的问题,没有注入进去,导致异常

题外话:至于网上很多原因及解决办法,我想说的是,其实解决办法很多都可行,只不过只适用于他们那种特定的场景,所以有效,但是落实到咱每个人,遇到的错误不一样,异常类似,具体的解决办法肯定不一样,这时,不应该照搬,而应该想一下出现这种异常的原因可能是什么,然后再结合别人的解决方案进行调试,一步一步找到问题和解决办法,这样才能提升

另外,debug调试非常重要,非常重要,非常重要,咱程序员一定要掌握其用法!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,845评论 18 139
  • 文章作者:Tyan博客:noahsnail.com | CSDN | 简书 3.9 Annotation-base...
    SnailTyan阅读 1,187评论 0 3
  • Spring Boot 参考指南 介绍 转载自:https://www.gitbook.com/book/qbgb...
    毛宇鹏阅读 46,926评论 6 342
  • 你好 我想这辈子就这样了,终究我们还是分开了 我周围有着一对让人羡慕的恋人,相恋三年互相见过父母,最近却刚刚分手了...
    唐渟阅读 158评论 0 0
  • 文来源:落忧 【满天飞雪降红尘】 1994年的12月,满天雪花飞舞,地上结了厚厚的一层冰。似乎今年的冬天格外冷。 ...
    吴希道阅读 648评论 0 4