Spring(之三)-- Spring整合Struts,Hibernate

原创 2015年07月06日 16:16:10

Spring整合Struts

在web应用中创建Spring容器有如下两种方式:

  • 直接在web.xml文件中创建Spring容器
  • 利用第三方MVC框架的扩展点,创建Spring容器

对于轻量级的JavaEE应用,工厂模式是更实际的策略,业务逻辑不是EJB,通常是一个POJO,业务逻辑组件的生成通常由工厂负责,而且工厂可以保证该组件的实例只需要一个就够了,可以避免重复实例化造成的系统开销。

下面是采用工厂模式的顺序图
这里写图片描述

控制器如何访问到容器中的业务逻辑组件呢?为了让Action访问到Spring的业务逻辑组件,有两种策略:

  • Spring容器负责管理控制器Action,并利用依赖注入为控制器注入业务逻辑组件
  • 利用Spring的自动装配,Action将会自动从Spring容器中获取所需的业务逻辑组件

让Spring管理控制器

在Struts单独使用时,是由struts核心控制器首先拦截到用户请求,然后将请求转发给对应的Action处理,在此过程中,Struts将负责创建Action实例,调用其execute()方法。现在的情形是:如果把action实例交由Spring容器来管理,而不是由Struts产生,现在需要一个插件,来让核心控制器知道调用Spring容器中的Action而不是自行创建的。这个插件是struts-spring-plugin.jar。
Spring插件提供了一种伪Action,在struts.xml文件中配置Action时通常需要制定class属性,该属性就是用于创建Action实例的实现类。但这个插件允许制定class属性时,不在指定Action的实际实现类,而是指定为Spring容器中的BeanId,这样Struts将不再自己负责创建Action。
整合关键:当Struts将请求转发给指定的Action时,Struts中的Action只是一个代号,并没有指定实际的实现类,当然也不可创建Action,而隐藏在该Action下的是Spring容器中的Action实例,它才是真正处理处理请求的控制器。

下面为Spring管理Action的协作图

这里写图片描述

这种策略的不足之处

  • Spring管理Action,必须将所有的Action配置在Spring中,而struts.xml文件中好需要配置一个伪Action,导致配置文件臃肿。
  • Action的业务逻辑组件接受容器注入,将导致代码可读性降低。

使用自动装配

通过设置struts.objectFactory.spring.autoWire常亮可以改变Spring插件的自动装配策略,该常量可接受

  • name
  • type
  • auto
  • constuctor

这种策略的不足之处
- Action接收Spring容器的自动装配,代码的可读性较差
- Action与业务逻辑组件的耦合降低到代码层次,必须在配置文件中配置与Action所需控制器同名的业务逻辑组件,这不利于高层次解耦

总结,整合Spring框架与不整合存在区别,这个区别不在这个配置文件中体现,而是在创建该Action实例时体现出来。如果不整合,则Struts框架负责创建Action实例,创建成功就结束了;如果整合Spring框架,则当Action实例创建完成后,Spring插件还会负责该Action所需的业务逻辑组件注入给该Action实例。

Spring整合Hibernate

DAO模式是一种标准的Java EE设计模式,DAO模式的核心思想是,所有的数据访问都通过DAO组建完成,DAO组件封装了数据库的增、删、改等原子操作。业务逻辑依赖于DAO组件提供的数据库原子操作,完成系统业务逻辑的实现。
JavaEE应用都大致可分为如下三层

  • 表现层
  • 业务逻辑层
  • 数据持久层

轻量级Java EE架构以Spring IOC容器为核心,承上启下:向上管理来自表现层的Action,向下管理业务逻辑层组件,同时负责管理业务逻辑层所需的DAO对象。

下图是轻量级Java EE应用架构
这里写图片描述

管理Hibernate的SessionFactory

当通过Hibernate进行持久层访问时,必须先获得SessionFactory对象,它是单个数据库映射关系
编译后的内存镜像。在大部分情况下,一个JavaEE应用对应一个数据库,即对应一个SessionFactory。在纯粹的Hibernate访问中,应用程序需要手动创建SessionFactory,这不是一个好的策略。Spring的IoC容器正好提供了这种管理方式,它不仅能以声明式的方式配置SessionFactory实例,也可以充分利用IoC容器的作用,为SessionFactory注入数据源引用。

从用户角度来看,用户发出HTTP请求,当MVC框架的控制器组件拦截到用户请求时,将调用系统的业务逻辑组件,业务逻辑组件则调用系统的DAO组件,而DAO组件则依赖于SessionFactory和DataSource等底层组件实现数据库访问。
从系统实现角度看,IoC容器创建SessionFactory和DataSource等底层组件,然后将这些底层组件注入给DAO组件,提供一个完整的DAO组件,并将此DAO组件注入给业务逻辑组件,从而提供一个完整的业务逻辑组件,而业务逻辑组件又被注入给控制器组件,控制器组件负责拦截用户请求,并将处理结果呈现给用户,这一系列衔接都有Spring 的IoC容器提供实现。

下面是Java EE应用各组件之间的调用关系
这里写图片描述

Struts2+Spring+Hibernate 三大框架的合并集成

这次来看看Struts2+Spring+Hibernate三大框架的整合应用,主要是Spring和Hibernate框架的整合,因为前边已经将Strtus2+Spring整合过了基本一样。    ...
  • liujiahan629629
  • liujiahan629629
  • 2014年03月19日 22:57
  • 35822

SSH三大框架的搭建整合(struts2+spring+hibernate)

SSH三大框架,学着整合SSH框架都有一段时间了,整理出来,加深自己印象。
  • kyle0349
  • kyle0349
  • 2016年06月24日 12:57
  • 7881

【SSH网上商城项目实战01】整合Struts2、Hibernate4.3和Spring4.2

今天开始做一个网上商城的项目,首先从搭建环境开始,一步步整合S2SH。这篇博文总结了如何整合Struts2、Hibernate4.3和Spring4.2。 整合三大框架得先从搭建各部分环境开始,也就是...
  • eson_15
  • eson_15
  • 2016年05月04日 22:11
  • 44316

用maven整合struts+spring+hibernate之三 加入框架支持

创建完web工程之后,一般我们就可以开始开发了。所以,这一节我们需要为这个web工程加入j2ee框架的支持。  这里其实不太好分清楚先加哪后加哪,因为系统框架是需要整体运行的,相互的关系...
  • songzhi909
  • songzhi909
  • 2013年06月06日 14:51
  • 279

Struts2+Spring+iBatis整合用户管理实例之三:用户管理,增删改查

原帖地址:http://blog.csdn.net/ruantao1989/article/details/8144129     用户管理功能的流程是:     1.管理功能会通过struts跳...
  • lidawei201
  • lidawei201
  • 2013年01月16日 14:14
  • 5518

Struts2+Spring+iBatis整合用户管理实例之三:用户管理,增删改查

用户管理功能的流程是:     1.管理功能会通过struts跳转到UserManager的Action,(spring帮助注入实例)     2.UserManagerAction里边聚合了Ma...
  • ruantao1989
  • ruantao1989
  • 2012年11月03日 17:47
  • 3634

Struts2+Spring4+Hibernate4整合系列--(三) 环境准备

下载Struts-2.5.5下载Spring4 需要说明,对于Spring而言,官网只提供MAVEN的加载方式,但是也有一个地址可以获取到具体的版本进行下载。这个地址如下:http://repo.s...
  • dongdongdongJL
  • dongdongdongJL
  • 2016年12月20日 15:33
  • 494

Struts2,Spring,Hibernate三大框架的整合(SSH)

jar 包和配置文件整合 sturts2.3.7 + hibernate3.6 + Spring3.2.0 struts2 框架 最基本开发jar包 “Struts2解压目录”/apps...
  • qq_36414013
  • qq_36414013
  • 2017年06月01日 23:08
  • 157

浅谈ssh(struts,spring,hibernate三大框架)整合的意义及其精髓

hibernate工作原理 原理: 1.读取并解析配置文件 2.读取并解析映射信息,创建SessionFactory 3.打开Sesssion 4.创建事务Transation 5.持久化...
  • husheng8891
  • husheng8891
  • 2013年03月30日 10:05
  • 496

三大框架SSH(struts2+spring+hibernate)整合时相关配置文件的模板

最近在学SSH三大框架的整合,在此对他们整合时相关配置文件做一简单的模板总结,方便以后复用!         首先是web.xml配置文件,这里面就配置一些简单的监听器、过滤器,包括spring核心...
  • qq799499343
  • qq799499343
  • 2012年08月06日 15:38
  • 5440
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Spring(之三)-- Spring整合Struts,Hibernate
举报原因:
原因补充:

(最多只允许输入30个字)