我有一顆豆:空指針異常,同時使用彈簧 - 雖然豆裝入正確
public class StatusPollingFilter extends AbstractDiscovery implements UserTester
定義爲:
<bean
id="statusPollingFilter"
class="com.xxxxx.yyyyyyy.zzz.StatusPollingFilter">
<property
name="evoDao"
ref="evoDaoFacade">
</property>
它加載好了,爲的日誌顯示:
2013-03-07 11:30:14,703 INFO DefaultListableBeanFactory [RunJSPModule] - Pre-instantiating singletons in org.s[email protected]14966cc: defining beans [org.springframework.aop.config.internalAutoProxyCreator,org.springframework.transaction.config.internalTransactionAdvisor,tilesConfigurer,viewResolver,urlMapping,discovery,statu
sPollingFilter,
當我嘗試用它作爲:
TopoObject topoobj = evoDao.getTopoObjectDao().findById(topoId);
evoDao是主要的傢伙這樣做是在規定的工作: 類AbstractDiscovery 爲:
//Reference to the DAO facade, for accessing the database via hibernate.
protected EvoTAMDAOFacade evoDao;
的問題? 因爲我擴展AbstractDiscovery我以爲我會能夠訪問evoDao並使用它作爲正常來得到我的道,但它似乎不是 - 我哪裏錯了? 爲什麼找不到Dao?
的EvoTAMDAOFacade被注入AbstractDiscovery爲:
/**
* DI method for accessing the DAO facade for accessing the
* database via hibernate.
* @param dao
*/
public void setEvoDao(EvoTAMDAOFacade dao)
{
this.evoDao = dao;
}
的getTopoObjectDao()中作爲注射EvoTAMDAOFacade定義:
public TopoObjectDAO getTopoObjectDao()
{
return this.topoObjectDao;
}
AbstractDiscovery定義爲:
public abstract class AbstractDiscovery implements Discovery
例外情況是:
[07 Mar 2013 11:42:24:353] POLL: Exception while getting obj during status update java.lang.NullPointerException 162.109.37.114 at:
java.lang.NullPointerException
另外Q? statusPollFilter在多個對象的調度程序中作爲線程運行 - 我實際上並不確定我應該將它定義爲單例bean,但如果我不這樣做,我如何訪問Dao?
在此先感謝您的幫助。
'TopoObjectDAO'是否也注入'EvoTAMDAOFacade'?這是空的也可能導致你的問題。 – 2013-03-07 14:58:59
它被注入,但這就是我的期望 - 顯然我在這裏做一些男生類型的錯誤,但我不能看到它。我期望注入的TopoObjectDAO可以通過spring初始化,並且最初爲空,但是可以通過.findById(topoId)填充;方法。或者我在這裏找到一些點。我認爲這是一個DAO的事實,並通過它的TopoObject.hbm.xml掛鉤到休眠,這將全部通過休眠處理,我會得到一個填充的對象,或者我需要從ID創建它首先不知何故?謝謝你的幫助。 – user2144209 2013-03-07 17:18:48
您是否嘗試在set方法中設置斷點,確保在應用程序加載時調用它們? – CodeChimp 2013-03-07 21:27:54