基于Spring的Console 树菜单的设计问题.谢谢.

07-03-15 javaest
我的系统有六个模块,每个模块对应一个多层树形菜单结构,树形结构的内容是存在数据库中的.也就是说一个模块对应了一个树开菜单表,这六个表的表结构是在系统启动之后固定的,不会变.如果不用SPRING我的想法就是写一个单例类,把这六个菜单表的数据读出来,生成页面显示时所需要的JS语句,然后一起存到一个HashMap中去.

因为是单例类嘛,所以这些事,只做一次就OK了,以后要显示哪 个菜单树就就HashMap 中取哪个菜单树的JS语句串就行了.

问题是现在,我想用spring来做,

但是我怕我Spring用的不地道(也就不是正中),所以高手看一下,应该怎么设计这个功能.

以下是我现在的设计:

下边是我的Spring配置文件.

<bean id="consoleTreeMenuBuilder" class="com.javest.common.webui.ConsoleTreeMenuBiulder" init-method="initAllTreeMenu">  
    <property name="jdbcTemplate">  
      <ref local="jdbcTemplate"/>  
    </property>  
    <property name="treeMenuMap">  
      <map>  
        <entry key="produceManageMenu">  
          <value>produce_manage_menu </value>  
        </entry>  
        <entry key="employeeManageMenu">  
          <value>employee_manage_menu </value>  
        </entry>  
      </map>  
    </property>  
  </bean>  

下边是我的Spring中用的类.

public class ConsoleTreeMenuBiulder {   
    public HashMap menuTableNameMap;   
    public JdbcTemplate jdbcTemplate;   
    private HashMap menuTreeScriptMap = new HashMap();   
  
    public void initAllTreeMenu() {   
        Object[] keyArr = menuTreeScriptMap.keySet().toArray();   
        for (int i = 0; i < keyArr.length; i++) {   
            String menuKey = (String) keyArr[i];   
            String menuTableNameStr = (String) menuTreeScriptMap.get(menuKey);   
            String selectStr = "select * from " + menuTableNameStr +   
                               " where effective_flag='Y'";   
            List menuNodeList = jdbcTemplate.queryForList(selectStr);   
            menuTreeScriptMap.put(menuKey,   
                                  transformToTreeMenuJsScriptStr(menuNodeList));   
        }   
  
    }   
  
    public String transformToTreeMenuJsScriptStr(List menuNodeList) {   
        return "";   
    }   
  
    public String getTreemenuJsScriptStr(String menuKey) {   
        return (String) menuTreeScriptMap.get(menuKey);   
    }   
  
    public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {   
        this.jdbcTemplate = jdbcTemplate;   
    }   
  
    public void setMenuTableNameMap(HashMap menuTableNameMap) {   
        this.menuTableNameMap = menuTableNameMap;   
    }   
} 

banq
2007-03-15 16:14
一样的。

在spring中配置的类缺省都是以单例形式存在。

javaest
2007-03-15 17:16
banq,兄,我的这个设计,没有问题吧,第一次用Spring,自己怕把Spring给用遭塌了,所以问一下.

我配置了init-method="initAllTreeMenu",这样好嘛??

banq
2007-03-16 10:25
>第一次用Spring,自己怕把Spring给用遭塌了

没有问题,现在框架就讲究大道至简,一个真正好的框架应该让你在编程时和以往没有什么特别感觉,也就是透明性很强,对你以往编程(一定是OO习惯编程)没有特别干预和不方便之处,这是我们选择框架的标准,否则,一定要坚持自己主见,不管别人吹嘘多好。

猜你喜欢