Bug它只會讓你更強大!

在速運快遞項目前端頁面用戶註冊的時候,點擊註冊之後總是報空指針異常,我當時一直想的是我前端頁面封裝model失敗了嗎?但是根本沒有想到是CustomerService是null.

針對這個問題,我的解決辦法如下:

  1、前端debug,看看請求參數是否正確

  F12,點擊註冊之後,看到瀏覽器響應碼為200,由於是post請求,請求參數體正確。但是後台就報空指針。很明顯,是後台程序的問題。

  2、後端debug

  在開啟debug模式之後,我在CustomerAction的singUpCustomerService.save(model)方法前打了斷點,點擊註冊按鈕之後,進入debug模式,在點擊F5進入 CustomerService.save(model)方法中,走完這一步,我在debug界面右上看到了所有參數的值,這時候才發現原來不是model為null,

  而是CustomerService為null。

在速運快遞項目前端頁面用戶註冊的時候,點擊註冊之後總是報空指針異常,我當時一直想的是我前端頁面封裝model失敗了嗎?但是根本沒有想到是CustomerService是null.

針對這個問題,我的解決辦法如下:

  1、前端debug,看看請求參數是否正確

  F12,點擊註冊之後,看到瀏覽器響應碼為200,由於是post請求,請求參數體正確。但是後台就報空指針。很明顯,是後台程序的問題。

  2、後端debug

  在開啟debug模式之後,我在CustomerAction的singUpCustomerService.save(model)方法前打了斷點,點擊註冊按鈕之後,進入debug模式,在點擊F5進入 CustomerService.save(model)方法中,走完這一步,我在debug界面右上看到了所有參數的值,這時候才發現原來不是model為null,

  而是CustomerService為null。

CustomerService

獲取更多Bug資料:672899761(行業大牛解答)

  Customer

為什麼CustomerService為null呢?思前想後不得其解,因為我是在crm項目寫的CustomerService和CustomerServiceImpl,最後通過webService發布的。我當時以為是我wsimport下載完webService代碼之後沒有更新項目的原因。在更新maven,install之後,運行之後還是會出現空指針異常。

  3、最後思路只能是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方法。

CustomerService

獲取更多Bug資料:672899761(行業大牛解答)

  Customer

為什麼CustomerService為null呢?思前想後不得其解,因為我是在crm項目寫的CustomerService和CustomerServiceImpl,最後通過webService發布的。我當時以為是我wsimport下載完webService代碼之後沒有更新項目的原因。在更新maven,install之後,運行之後還是會出現空指針異常。

  3、最後思路只能是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方法。

  1. 工作1-5年,感覺自己技術不行,想提升的
  2. 沒有工作經驗,但基礎非常紮實,想提升自己技術的。
  3. 還有就是想一起交流學習的。
  4. 工作遇到瓶頸了,想進階突破自己的。
  5. 小號一律不給過,謝謝。
  6. 學習交流群:672899761 備註好信息

推薦閱讀:

軟體測試工程師的職責和10大城市薪資對比
恭喜正厚邵同學,從開發轉行測試,薪資翻倍。
Testner創始人Sea:軟體測試行業人才數量供不應求?

TAG:軟體測試 | 軟體測試工程師 | 軟體測試培訓 |