0

私は豆を持っています:

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 にアクセスできますか?

よろしくお願いします。

4

1 に答える 1