【IT168技术文档】Spring的官方定义是:一个轻量级的IoC和Aop容器框架,它使用了一种叫做依赖注入的技术。所谓依赖注入,就是指将创建对象以及协议依赖对象之间合作的责任从对象自身中转移到“工厂”中去,这个“工厂”通常由IoC容器提供。
Struts2与Spring的集成要用到Spring插件包,这个包是同Struts2一起发布的。Spring插件是通过覆盖(override)Struts2的ObjectFactory来增强核心框架对象的创建。当创建一个对象的时候,它会用Struts2配置文件中的class属性去和Spring配置文件中的id属性进行关联,如果能找到则由Spring创建,否则由Struts2框架自身创建,然后由Spring来装配。Spring插件具体有如下几个作用:
1. 允许spring来创建Action、Interceptror和Result
2. 由Struts创建的对象能够被Spring装配
3. 提供了2个拦截器来自动装配action,如果没有使用Spring ObjectFactory的话
这里要注意的是,我们不必在Spring中去注册action,尽管我们可以这么去做,通常Struts框架会自动的从action mapping中创建action对象。
要实现与Struts与Spring的集成有如下几步
1.将struts2-spring-plugin-2.0.8.jar文件包含到我们的应用中,放到WEB-INF/lib目录下面即可。在这个插件包中有个struts-plugin.xml文件,它的内容如下:
<struts>
<bean type="com.opensymphony.xwork2.ObjectFactory" name="spring"
class="org.apache.struts2.spring.StrutsSpringObjectFactory" />
<constant name="struts.objectFactory" value="spring" />
<package name="spring-default">
<interceptors>
<interceptor name="autowiring"
class="com.opensymphony.xwork2.spring.interceptor.ActionAutowiringInterceptor"/>
<interceptor name="sessionAutowiring"
class="org.apache.struts2.spring.interceptor.SessionContextAutowiringInterceptor"/>
</interceptors>
</package>
</struts>
这里它将框架常量struts.objectFactory覆盖了,设置为”spring”,其实这里是使用了缩写,我们可以写全称:org.apache.struts2.spring.StrutsSpringObjectFactory。这个缩写的”spring”是和bean配置中的name属性相对应的。默认情况下所有由框架创建的对象都是由ObjectFactory实例化的,ObjectFactory提供了与其它IoC容器如Spring、Pico等集成的方法。覆盖这个ObjectFactory的类必须继承ObjectFactory类或者它的任何子类,并且要带有一个不带参数的构造方法。在这里我们用org.apache.struts2.spring.StrutsSpringObjectFactory代替了默认的ObjectFactory。
此外,上面我们说了,如果action不是使用Spring ObjectFactory创建的话,插件提供了两个拦截器来自动装配action,默认情况下框架使用的自动装配策略是name,也就是说框架会去Spring中寻找与action属性名字相同的bean,可选的装配策略还有:type、auto、constructor,我们可以通过常量struts.objectFactory.spring.autoWire来进行设置。
2.配置Spring监听器,将Spring.jar包包含到应用中
将下面一段话插入到web.xml文件中,同时将spring.jar文件放到WEB-INF/lib目录下面。
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
3.利用Spring配置文件来注册对象
这之后的步骤就和我们使用单独使用Spring一样了,现在我们就已经完成了Struts与Spring的集成了。这里有一点要注意的是,我们还要指定Spring配置文件的地点,默认情况下,容器会到WEB-INF目录下面去寻找applicationContext.xml文件。如果我们想指定别的地方的配置文件或者指定多个配置文件,可以通过在web.xml文件中定义context-param元素来指定,如下所示:
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
/WEB-INF/applicationContext.xml,classpath:applicationContext-*.xml
</param-value>
</context-param>
上面一段话表示WEB-INF下面的applicationContext.xml文件以及classpath下面的所有匹配applicationContext-*.xml模式的文件都会作为Spring配置文件被装载。
分享到:
相关推荐
struts spring集成 struts spring集成 struts spring集成
struts2入门教程及struts2集成spring。
struts2 spring hibernate集成 介绍上传下载。。
三大框架集成及两两集成的jar包,spring集成hibernate的jar包以及spring集成struts2的jar包已经单独打包
1. 导入的包 <br>l struts2的五个基础包:commons-logging-1.1.jar;... <br>xwork-2.0.0.jar. <br>l spring的核心包:spring.jar <br>l 二者集成开发所需的包:struts-spring-plugin-2.0.6.jar
注意:struts2-spring-plugin-2.3.8.jar和commons-logging.jar文件可以在 struts框架中的找到而spring.jar 在spring框架中 2. 配置struts.objectFactory属性值: 在struts.xml文件中添加 <constant name="...
通过简单了实例 并提供代码 指导初学者学会spring和struts2的集成 并实现简单的登录功能
struts2.2.3集成spring时需要添加的jar包,struts2-spring-plugin-2.2.3.jar
2.Action里通过struts2-spring-plugin.jar插件自动根据名字注入。 3.Ajax无刷新异步调用Struts2,返回Json数据,以用户注册为例。 4.在服务端分页查询功能,优点:实时性:跳页才查询。数据量小:只加载当前页的记录...
Struts2 Spring2.5集成:系统登陆demo--带lib可直接运行
整合使用最新版本的三大框架(即Struts2、Spring4和Hibernate4),搭建项目架构原型。 项目架构原型:Struts2.3.16 + Spring4.1.1 + Hibernate4.3.6 + Quartz2.2.1。 此外,还有:Quartz、JUnit4、Log4j、SLF4J、...
struts2-spring-plugin.jar :struts,spring插件。...在我们集成struts2+spring+hibernate,也就是所谓的S2SH,不可避免的要引入struts2-spring-plugin.jar插件。 本文介绍了该插件的使用方式,工作原理,和常见问题
flex与+struts2+hibernate+spring集成实例项目,源码奉献,物有所值
struts+spring 集成
Maven搭建spring_struts2_Hibernate项目源码,包括数据库,博客地址:http://blog.csdn.net/fengshizty/article/details/43794911
struts spring集成原理 struts spring集成原理 struts spring集成原理
SSH集成 Struts+spring+hibernate集成SSH集成 Struts+spring+hibernate集成
本书以Struts,Hibernate,Spring为核心详细地讲解了这三个组件的基础知识和基本使用方法,并通过一系列集成开发实例讲解了这三个组件在J2EE项目中的应用。. 本书对每一个组件的讲解都是以入门级实例开始的,然后...
spring 和struts2 集成所需要的jar包
现在就将笔者使用Myeclipse工具应用struts2 + spring2 + hibernate3 实现CRUD操作的步骤一一纪录下来,为初学者少走弯路略尽绵薄之力!在本文中,笔者将Struts2.0.6、Spring2.0.6和Hibernate3.1进行整合,希望通过...