前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >善待你遇到的bug,它只会让你更强大!

善待你遇到的bug,它只会让你更强大!

作者头像
神秘的寇先森
发布2018-05-30 16:24:55
3670
发布2018-05-30 16:24:55
举报
文章被收录于专栏:Java进阶之路Java进阶之路

在速运快递项目前端页面用户注册的时候,点击注册之后总是报空指针异常,我当时一直想的是我前端页面封装model失败了吗?但是根本没有想到是CustomerService是null.

针对这个问题,我的解决办法如下:
  1. 前端debug,看看请求参数是否正确 F12,点击注册之后,看到浏览器响应码为200,由于是post请求,请求参数体正确。但是后台就报空指针。很明显,是后台程序的问题。

nullPointException.png

  1. 后端debug 在开启debug模式之后,我在CustomerAction的singUpCustomerService.save(model)方法前打了断点,点击注册按钮之后,进入debug模式,在点击F5进入 CustomerService.save(model)方法中,走完这一步,我在debug界面右上看到了所有参数的值,这时候才发现原来不是model为null, 而是CustomerService为null。

CustomerService.png

Customer.png

为什么CustomerService为null呢?思前想后不得其解,因为我是在crm项目写的CustomerService和CustomerServiceImpl,最后通过webService发布的。我当时以为是我wsimport下载完webService代码之后没有更新项目的原因。在更新maven,install之后,运行之后还是会出现空指针异常。

  1. 最后思路只能是spring配置文件了,经过查找,问题就在这里! 以下是我最初配置的spring配置文件:因为bos_fore项目只有web层,因此就大意只配置了webService服务代理对象,而忽略了spring注解的扫描包的配置。 <jaxws:client id="customerClient" address="http://localhost:8888/bos_crm/service/customer" serviceClass="cn.baidu.cxf.service.CustomerService"> </jaxws:client> 正确配置应该加上: <!--配置注解的扫描包 --> <context:component-scan base-package="cn.baidu.customer.action"></context:component-scan>

问题解决:因为我们把Action的创建交给了spring接管,所以配置spring扫描包这件事一定不能省略。不然配置的Autowired就不能成功,即不能给CustomerService注入。 之所以能进入Action方法中是因为web.xml中配置的拦截器,只要配置了拦截器,只要访问路径成功就能进入action内部。而注入成功与否是靠注解或者set方法。 善待你的遇到的所有bug,它只会让你更强大!

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017.12.23 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 针对这个问题,我的解决办法如下:
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档