尊重版权:http://blog.csdn.net/qjlsharp/archive/2009/03/21/4013255.aspx

写的真不错。

在SSH框假中spring充当了管理容器的角色。我们都知道Hibernate用来做持久层,由于它将JDBC做了一个良好的封装。程序猿在与数据库进行交互时能够不用书写大量的SQL语句。

Struts是用来做应用层的。他它负责调用业务逻辑serivce层。所以SSH框架的流程大致是:Jsp页面----Struts------Service(业务逻辑处理类)---Hibernate(左到右)

struts负责控制Service(业务逻辑处理类),从而控制了Service的生命周期,这样层与层之间的依赖和强。属于耦合。这时,使用spring框架就起到了控制Action对象(Strus中的)和Service类的作用,两者之间的关系就松散了,Spring的Ioc机制(控制反转和依赖注入)正是用在此处。

     Spring的Ioc(控制反转和依赖注入)

     控制反转:就是由容器控制程序之间的(依赖)关系,而非传统实现中,由程序代码直接操控 

     依赖注入:组件之间的依赖关系由容器在执行期决定 。由容器动态的将某种依赖关系注入到组件之中 。

从上面我们不难看出:从头到尾Action不过充当了Service的控制工具。这些详细的业务方法是如何实现的。他根本就不会管,也不会问。他只要知道这些业务实现类所提供的方法接口就能够了。而在以往单独使用Struts框架的时候,全部的业务方法类的生命周期,甚至是一些业务流程都是由Action来控制的。

层与层之间耦合性太紧密了,既减少了数据訪问的效率又使业务逻辑看起来非常复杂。代码量也非常多。,Spring容器控制全部Action对象和业务逻辑类的生命周期,由与上层不再控制下层的生命周期,层与层之间实现了全然脱耦,使程序执行起来效率更高,维护起来也方便。

  使用Spring的第二个优点(AOP应用):

    事务的处理:

   在以往的JDBCTemplate中事务提交成功。异常处理都是通过Try/Catch 来完毕,而在Spring中。Spring容器集成了TransactionTemplate,她封装了全部对事务处理的功能,包含异常时事务回滚,操作成功时数据提交等复杂业务功能。

这都是由Spring容器来管理,大大降低了程序猿的代码量。也对事务有了非常好的管理控制。

Hibernate中也有对事务的管理,hibernate中事务管理是通过SessionFactory创建和维护Session来完毕。

而Spring对SessionFactory配置也进行了整合,不须要在通过hibernate.cfg.xml来对SessionaFactory进行设定。这种话就能够非常好的利用Sping对事务管理强大功能。避免了每次对数据操作都要现获得Session实例来启动事务/提交/回滚事务还有繁琐的Try/Catch操作。这些也就是Spring中的AOP(面向切面编程)机制非常好的应用。一方面使开发业务逻辑更清晰、专业分工更加easy进行。还有一方面就是应用Spirng  AOP隔离降低了程序的耦合性使我们能够在不同的应用中将各个切面结合起来使用大大提高了代码重用度。

【夯实基础】Spring在ssh中的作用的更多相关文章

  1. [转]spring的filter中targetFilterLifecycle作用

    在web.xml中进行配置,对所有的URL请求进行过滤,就像"击鼓传花"一样,链式处理. 配置分为两种A和B. A:普通配置 在web.xml中增加如下内容:<filter& ...

  2. JAVA三大框架SSH的各自作用

        一.Spring Spring是一个解决了许多在J2EE开发中常见的问题的强大框架. Spring提供了管理业务对象的一致方法并且鼓励了注入对接口编程而不是对类编程的良好习惯. Spring的 ...

  3. spring中scope(作用越)理解

    今天总结了一下spring中作用域scope的用法.在spring中作用域通过配置文件形式的用法如下. <bean id="role" class="spring. ...

  4. (转)web.xml中的contextConfigLocation在spring中的作用

    (转)web.xml中的contextConfigLocation在spring中的作用   一.Spring如何使用多个xml配置文件 1.在web.xml中定义contextConfigLocat ...

  5. 【转】SSH中 整合spring和proxool 连接池

    [摘要:比来做的一个项目中应用到了毗邻池技巧,大概我们人人比拟认识的开源毗邻池有dbcp,c3p0,proxool.对那三种毗邻池来讲,从机能战失足率来讲,proxool轻微比前两种好些.本日我首要简 ...

  6. Spring基础——在 IOC 容器中 Bean 之间的关系

    一.在 Spring IOC 容器中 Bean 之间存在继承和依赖关系. 需要注意的是,这个继承和依赖指的是 bean 的配置之间的关系,而不是指实际意义上类与类之间的继承与依赖,它们不是一个概念. ...

  7. Spring基础——在Spring Config 文件中配置 Bean

    一.基于 XML 的 Bean 的配置——通过全类名(反射) <bean <!-- id: bean 的名称在IOC容器内必须是唯一的若没有指定,则自动的将全限定类名作为 改 bean 的 ...

  8. SSH中的jar包讲解(1)

    我们在搭建SSH框架的时候,需要引入各自的一些jar包,相信很多初学者跟我一样,搜个资料,照搬过来(当然版本还得对应),至于为什么要引入这些个jar包,引入它们的作用是啥子,一头雾水,今天我就来跟这些 ...

  9. SQL夯实基础(九)MySQL联接查询算法

    书接上文<SQL夯实基础(八):联接运算符算法归类>. 这里先解释下EXPLAIN 结果中,第一行出现的表就是驱动表(Important!). 对驱动表可以直接排序,对非驱动表(的字段排序 ...

随机推荐

  1. 基于visual Studio2013解决C语言竞赛题之0907删除记录

       题目

  2. 欢迎大家关注我的微信公众帐号小q机器人(xiaoqrobot)(转)

    一个偶然的机会让我接触到了微信公众平台,赶紧加了几个交流群了解下相关情况,突然间发现好像全部的APP开发人员都在研究微信公众帐号的开发,而我显得有些落舞了.至于为什么热度会这么高,我想一个数字足以说明 ...

  3. mysql导入sql文件过大或连接超时的解决的方法

    前段时间出差在现场开发的时候,导入数据库老是出问题.最后发现了一个奇妙sql语句交给实施,仅仅要导入出错就把例如以下语句运行就能够了.至今屡试不爽. set global max_allowed_pa ...

  4. 好消息:8月25日广州嵌入式Linux开发免费项目约定你

    8月18日,粤嵌深圳分校举行了盛大的免费嵌入式项目体验,众多嵌入式爱好者排队参加项目体验的火爆场景仿佛还在眼前,体验效果得到学员一致好评.时隔一周,粤嵌广州总部也不容落后,在粤嵌广州总部举办<嵌 ...

  5. 【linux】UBUNTU 12.04下傻瓜式简单安装arm-linux-gcc等gnu arm toolchain交叉编译工具

    欢迎转载,转载时请保留作者信息,谢谢. 邮箱:tangzhongp@163.com 博客园地址:http://www.cnblogs.com/embedded-tzp Csdn博客地址:http:// ...

  6. oracle for update和for update nowait(for update wait)的区别

    1.for update 和 for update nowait 的区别: 1.oracle 中执行select 操作读取数据不会有任何限制,当另外一个进程在修改表中的数据,但是并没有commit,所 ...

  7. JAVA 操作 DBF 文件数据库

    1.依赖夹包 javadbf-[].4.1.jar jconn3.jar 2.添加属性文件 jdbc.properties jdbc.driverClassName=com.sybase.jdbc3. ...

  8. 基于visual Studio2013解决C语言竞赛题之1060寻找回文数

       题目 解决代码及点评 /* 60. 回文数指左右数字对称的数,如121,2112都是回文数.回文数猜想:取一任意十进制数,将其倒过来,并将这两个数相加, 然后把这个相加的和倒过来再与 ...

  9. Microsoft office PPT 2007 保存时速度慢(整理自网上)

    问题描述: XP sp3上运行PPT2007,当需要保存文件时,发现竟然需要近1分钟才能保存完毕,其间可能会出现“瘟都死沙漏”来提示你正在保存. 这简直慢到过分慢到无法容忍,一开始以为是ppt文件过大 ...

  10. Linear Regression(线性回归)(二)—正规方程(normal equations)

    (整理自AndrewNG的课件,转载请注明.整理者:华科小涛@http://www.cnblogs.com/hust-ghtao/) 在上篇博客中,我们提出了线性回归的概念,给出了一种使代价函数最小的 ...