美文网首页
java inovationtargetexception nu

java inovationtargetexception nu

作者: wangzaiplus | 来源:发表于2017-08-25 11:01 被阅读0次

    异常信息: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调试非常重要,非常重要,非常重要,咱程序员一定要掌握其用法!

    相关文章

      网友评论

          本文标题:java inovationtargetexception nu

          本文链接:https://www.haomeiwen.com/subject/oncudxtx.html