相信SSH初學者確定遇到過這個問題,可是又是百思不得其解,明白了以後就恍然大悟。java
程序實現過程是UserAction中調用UserService,UserService的實現類中調用了DAO類。在程序運行過程當中控制檯出現NullPointerException的錯誤:函數
調試時進入了InvocationTargetException函數:spa
Debug中發現UserService代碼在調用Dao的時候出現了問題:調試
調試發現,傳的參數都是正常的,可是就是在59行代碼報錯,並且不能直接進入baseDao的get方法。進入了下面的InvocationTargetException代碼:對象
再往下調試,控制檯輸出java.lang.NullPointerException錯誤。blog
想到在執行baseDao對象的get方法時候會調用invoke()方法。get
Method invoke()方法源代碼:io
代碼中看到當傳進來的對象爲空時,返回NullPointerException()錯誤。因此能夠確定的是傳進來的dao對象是爲空的。容器
看一下Spring對各個對象的管理狀況,檢查代碼發現了問題所在,dao沒有注入。bug
知道了問題所在,解決辦法:
添加dao對象到Spring Ioc容器
在16行加上@Resource(name = "baseDao")註解,告訴Spring,讓Spring把建立好的baseDao對象注入給UserService。
這樣Spring NullPointerException,InvocationTargetException的問題得以解決。