weixin_42298786 2008-12-04 12:48
浏览 194
已采纳

关于单例模式的类在SSH中的配置,加载不到DAO

单例类中dao加载不到,为null。



我的配置如下:

public class SystemHelper {

private static SystemHelper instance = null;

private DAO1 ruleDao ;

     private static Hashtable buySaleRuleHt = null

public void setRuleDao(DAO1 ruleDao) {
    this.ruleDao = ruleDao;
}

     public static synchronized SystemHelper getInstance() {

    if (instance == null)
        instance = new SystemHelper();
    return instance;
}

     public synchronized Hashtable getBuySaleRulHt() {
    if (buySaleRuleHt == null || buySaleRuleHt.isEmpty()) {
        <span style="color: red;">List list = ruleDao.findAll();//这里的DAO为null</span>
        WebBuySaleRule bo = null;
        for (int i = 0; i &lt; list.size(); i++) {
            bo = (WebBuySaleRule) list.get(i);
            buySaleRuleHt.put(bo.getRuleId(), bo);
        }
    }
    return buySaleRuleHt;
}

public synchronized Hashtable reloadBuySaleRuleHt() {
    buySaleRuleHt.clear();
    this.getBuySaleRulHt();

    return buySaleRuleHt;
}

}





applicationContext.xml

    <bean id="Systemhelper" class="com.xinglong.web.util.SystemHelper">
<property name="ruleDao">
<ref bean="DAO1">
</property>
</bean>
//DAO1,已按正常配置




action中调用:



Hashtable kindsHt = SystemHelper.getInstance().getGoldKindHt();






哪位知道该怎样配置

  • 写回答

3条回答 默认 最新

  • iteye_19016 2008-12-04 19:45
    关注

    首先我要说 你的配置没问题!
    问题就在于 你的是单例模式“是自己来触发”所以spring拦截不到 所以不会注入dao实例。

    解决的办法是,在你的普通层 非单例的类里面。如果有配置了dao注入,哪么就这么写:
    [code="java"]
    ...
    public setDao(obj){
    this.dao = obj;
    SystemHelper.setRuleDao(dao);//这样获得实例
    }
    ...
    [/code]

    不过我不明白 LZ为什么要这样用单例。 你这样根本就没有用到单例。单例管理的是
    instance 这个对象。跟那个DAO无关。
    你这就好比 到处想办法想把冲锋枪改成单发的打得精准点,那你为什么不直接用步枪?

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 微信会员卡接入微信支付商户号收款
  • ¥15 如何获取烟草零售终端数据
  • ¥15 数学建模招标中位数问题
  • ¥15 phython路径名过长报错 不知道什么问题
  • ¥15 深度学习中模型转换该怎么实现
  • ¥15 HLs设计手写数字识别程序编译通不过
  • ¥15 Stata外部命令安装问题求帮助!
  • ¥15 从键盘随机输入A-H中的一串字符串,用七段数码管方法进行绘制。提交代码及运行截图。
  • ¥15 TYPCE母转母,插入认方向
  • ¥15 如何用python向钉钉机器人发送可以放大的图片?