私は豆を持っています:
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.springframework.beans.factory.support.DefaultListableBeanFactory@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
別の質問?statusPollFilter は、複数のオブジェクトのスケジューラでスレッドとして実行されています - 実際にはそれをシングルトン Bean として定義する必要があるかどうかはわかりませんが、そうでない場合はどうすれば Dao にアクセスできますか?
よろしくお願いします。