日期:2014-05-17  浏览次数:20782 次

大家帮忙看一下这样的SSH框架结构好不好
本帖最后由 devil13th 于 2012-05-14 17:26:11 编辑
原文引用:http://devil13th.iteye.com/admin/blogs/1528498
说明:最好看原文,有源码


先看一下整体结构图



说明:

红色部门是DAO

蓝色部门是SERVICE

绿色部门是ACTION(或是Spring的Controller)

 

DAO部分说明

BaseDao是基类,所有的DAO都继承此BaseDao,BaseDao继承了HibernateDaoSupport,用HibernateTemplate实现了一些基础的方法(插删改查),以下是代码
Java代码

   

 

对于所有模块的DAO,Spring配置中都注入到了DaoFactory中,DaoFactory代码如下
Java代码

    package com.thd.dao;  
      
    import com.thd.dao.tree.TreeDao;  
    import com.thd.dao.user.UserDao;  
      
    public class DaoFactory {  
        private UserDao userDao;  
        private TreeDao treeDao;  
        public TreeDao getTreeDao() {  
            return treeDao;  
        }  
      
        public void setTreeDao(TreeDao treeDao) {  
            this.treeDao = treeDao;  
        }  
      
        public UserDao getUserDao() {  
            return userDao;  
        }  
      
        public void setUserDao(UserDao userDao) {  
            this.userDao = userDao;  
        }  
    }  

 DaoFactory中有所有模块的DAO提供给Service使用。

 

 

SERVICE部门说明

BaseServiceImpl是所有模块Service的基类,BaseServiceImpl有DaoFactory的引用 还有ServiceFactory的引用(因为有可能一个Service调用另外一个Service的方法,所以引用了ServiceFactory,ServiceFactory在下面有说明),所有模块的Service继承BaseServiceImpl后就可以拿到所有的DAO和Service。ServiceFactory分为两种IocServiceFactoryImpl和InjectionServiceFactoryImpl,他们都实现了ServiceFactory接口(此接口有所有模块Service的Setter Getter方法),只不过Getter方式不同,一个是通过Spring IOC容器注入然后获取Service Bean,一个是通过代码拿到Spring IOC中的Service Bean.ServiceFactory的实现注入到BaseServiceImpl以提供给所有模块的Service。

 

IocServiceFactoryImpl的代码如下:
Java代码

    package com.thd.serviceimpl;  
      
    import org.springframework.context.ApplicationContext;  
    import org.springframework.context.support.ClassPathXmlApplicationContext;  
      
    import com.thd.service.ServiceFactory;