【夯实基础】Spring在ssh中的作用

【夯实基础】Spring在ssh中的作用

大家好,又见面了,我是全栈君。

尊重版权: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隔离降低了程序的耦合性使我们能够在不同的应用中将各个切面结合起来使用大大提高了代码重用度。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/116362.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 连接远程服务器提示ora 12154,EasyConnect出现ORA-12154(无法解析指定的连接标示符)错误的解决…

    连接远程服务器提示ora 12154,EasyConnect出现ORA-12154(无法解析指定的连接标示符)错误的解决…今天在群里碰见了一个ORA-12154的问题,在此记录一下解决过程起因是群里面一个人问了他的Windows客户端采用easyconnect方式连接Oracle服务器的时候,报错如下:ORA-12154:TNS:无法解析指定的连接标示符最初的想法是在服务器端的listener没有相关的service_name来接收请求,不过他后来给出的截图表明,确实有相关的service_name来接收这个请求。…

  • 事务ACID理解

    事务ACID理解事务管理(ACID)谈到事务一般都是以下四点原子性(Atomicity)原子性是指事务是一个不可分割的工作单位,事务中的操作要么都发生,要么都不发生。一致性(Consistency)事务前后数据的完整性必须保持一致。隔离性(Isolation)事务的隔离性是多个用户并发访问数据库时,数据库为每一个用户开启的事务,不能被其他事务的操作数据所干扰,多个并发事务之间要相互隔…

    2022年10月12日
  • redis通过6379端口无法连接服务器

    redis通过6379端口无法连接服务器看了网上很多解决方案,都是端口问题,将127.0.0.1改为0.0.0.0,就ok了,但是本人的问题不是端口问题,端口本来就是0.0.0.0。其实redis无法连接数据库就只有这几种可能,防火墙,安全组,密码,绑定IP。这次的问题感觉还是比较让人费解的,当更换端口号的时候就可以,默认端口6379就是不行。按照顺序依次检查了防火墙,安全组,密码,配置文件,都确认没有问题之后,再次启动redis,…

  • R语言开发工具之eclipse+StatET

    R语言开发工具之eclipse+StatET

  • Nginx负载均衡配置简单配置方法

    Nginx负载均衡配置简单配置方法

  • Android 时钟TextClock 使用及源码分析

    Android 时钟TextClock 使用及源码分析TextClock可以将当前日期和/或时间显示为格式化字符串。

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号