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条)

报告相同问题?

悬赏问题

  • ¥20 模型在y分布之外的数据上预测能力不好如何解决
  • ¥15 processing提取音乐节奏
  • ¥15 gg加速器加速游戏时,提示不是x86架构
  • ¥15 python按要求编写程序
  • ¥15 Python输入字符串转化为列表排序具体见图,严格按照输入
  • ¥20 XP系统在重新启动后进不去桌面,一直黑屏。
  • ¥15 opencv图像处理,需要四个处理结果图
  • ¥15 无线移动边缘计算系统中的系统模型
  • ¥15 深度学习中的画图问题
  • ¥15 java报错:使用mybatis plus查询一个只返回一条数据的sql,却报错返回了1000多条