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

关于SSH程序的一些简单疑问
开始是struts2+hibernate3的程序,运行良好,现在学习spring,加入了spring,但是觉得spring太抽象了,不如前面两个框架好理解,现在程序整合了spring,不太了解spring配置里的bean作坊,能解释一下下么?虽然程序可以完美运行,但是都是凭感觉结合例子各种调试改好的。。。 唯一的感觉就是 S+H 的时候, DAOImpl里的方法太复杂了,现在代码简单多了,呵呵,如:hibernateTemplate.save(user) ;

代码如下:


XML code
    <bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate">
        <constructor-arg ref="sessionFactory"/>
        </bean>
    <bean id="dao" class="com.dao.impl.SNewsDaoImpl">
        <property name="hibernateTemplate" ref="hibernateTemplate"/>
    </bean>
    <bean id="service" class="com.service.impl.SNewsServiceImpl">
        <property name="dao" ref="dao"/>
    </bean>
        <bean id="SNewsAction" class="com.action.SNewsAction">
        <property name="service" ref="service" />
    </bean>    




action :

Java code
 SNewsService service;
    
    //采用模型驱动
    private SNews model=new SNews();//用于封装会员属性模型
    public SNews getModel() {
        return model;
    }
    
    //存放会员列表数据

    List<SNews> newsList;

    //存放action之间的提示信息
    String actionMsg ;
    
    /** 处理浏览请求 */
    public String listNews(){
        if (LOG.isInfoEnabled()) {
            LOG.info(CLASSNAME + "**********所有信息方法开始********");
            }
        newsList = service.allNews();
        return SUCCESS;
    }





DAOImpl:

Java code
        public List allNews() {
            return hibernateTemplate.find("from SNews order by news_id" ) ;
        }



还有什么 AOP , 注解 ,这些怎么用呢? 我程序里现在感觉只封装了hibernate,简化了DAOImpl的方法,。


------解决方案--------------------
如果考虑到了系统维护和修改,可以写个通用的dao
------解决方案--------------------
用熟了在看原理 就清晰了
------解决方案--------------------
spring你现在用到的只是他一些简单的东西,他的核心思想是AOP
<bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate">
<constructor-arg ref="sessionFactory"/>
</bean>
可以简单理解成和工厂模式差不多,不用你手动的在去new一些东西,而是通过spring,他来负责管理你的对象,你需要对象时他给你new,这里的配置就是告诉他哪个类需要他负责管理
STRUTS2负责V和C
HIBERNATE 负责m 也就是数据持久化
使项目的层级更加分明,简化了开发,但从效率上来说,比传统的mvc要慢很多
------解决方案--------------------
我用的简单理解是 不用再CLASS里面new其他类 而是在application。xml里面配置 就能直接调用了
个人理解 仅供参考 有误请纠正
------解决方案--------------------
我们也刚学完这几个框架 跟你有差不多的感受 spring是简化了 代码 但是我在想 这段时间给我带来的不是
春天 而是冬天了
------解决方案--------------------
spring配置里的这bean作坊,就先理解它是在解耦吧。action、service、dao 他们之间的耦合不再是写死在你代码里的了,而是在spring里配置的。这点可能在实际的应用中,遇到项目需要各种修改的时候就会有体会了。
还有上面大侠说的aop,做一些类似拦截器的东西,你的诸多bean都不需要进行植入任何代码的。非常强大的。
可能你目前还只是了解spring如何配置,如何让程序跑起来,慢慢来吧。
------解决方案--------------------
不需要在类里重复NEW一些DAO了。