`

在Struts2中集成Spring详细讲解

阅读更多

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配置文件被装载。

 

分享到:
评论

相关推荐

    struts2入门教程及struts2集成spring

    Struts2是一个强大的MVC(模型-视图-控制器)框架,它极大地简化了Java Web应用的...通过阅读《在Struts2中集成Spring详细讲解 — IT技术 - 赛迪网》等教程,开发者可以深入理解这一过程,并在自己的项目中实践应用。

    struts+spring集成

    2. **Spring作为Struts2的Action上下文**:在Struts2中,Action是处理请求的核心组件。通过Spring管理Action,我们可以利用Spring容器初始化Action,这样Action的实例化和依赖关系的建立都由Spring负责。 3. **配置...

    Struts,Hibernate,Spring集成开发宝典.pdf

    《Struts Hibernate Spring集成开发宝典》以Struts,Hibernate,Spring为核心详细地讲解了这三个组件的基础知识和基本使用方法,并通过一系列集成开发实例讲解了这三个组件在J2EE项目中的应用。《Struts Hibernate ...

    Struts Hibernate Spring集成开发宝典 源码

    《Struts Hibernate Spring集成开发宝典》以Struts,Hibernate,Spring为核心详细地讲解了这三个组件的基础知识和基本使用方法,并通过一系列集成开发实例讲解了这三个组件在J2EE项目中的应用。《Struts Hibernate ...

    Struts,Hibernate,Spring集成开发宝典

    本书以Struts,Hibernate,Spring为核心详细地讲解了这三个组件的基础知识和基本使用方法,并通过一系列集成开发实例讲解了这三个组件在J2EE项目中的应用。. 本书对每一个组件的讲解都是以入门级实例开始的,然后...

    Spring之Spring2.5集成Struts2.2

    标题“Spring之Spring2.5集成Struts2.2”涉及到的是在Web开发中整合两个非常流行的开源框架——Spring和Struts2的过程。这个过程旨在利用Spring的强大IoC(Inversion of Control,控制反转)和AOP(Aspect Oriented ...

    Struts+Hibernate+Spring集成开发

    计算机电子书下载,《Struts Hibernate Spring集成开发宝典》以Struts,Hibernate,Spring为核心详细地讲解了这三个组件的基础知识和基本使用方法,并通过一系列集成开发实例讲解了这三个组件在J2EE项目中的应用。...

    Struts Hibernate Spring集成开发宝典.part1

    计算机电子书下载,《Struts Hibernate Spring集成开发宝典》以Struts,Hibernate,Spring为核心详细地讲解了这三个组件的基础知识和基本使用方法,并通过一系列集成开发实例讲解了这三个组件在J2EE项目中的应用。...

    《企业应用架构设计-Struts2 Hibernate3 Spring 2》谢星星 第十九章整合源码

    《企业应用架构设计-Struts2 Hibernate3 Spring 2》是谢星星撰写的一本经典书籍,专注于讲解如何在企业级应用程序中有效地整合这三个强大的开源框架。第十九章的主题是“Struts2 Hibernate3整合源码”,这涉及到...

    eclipse_struts_hibernate_spring集成开发宝典 blog.rar

    《Eclipse、Struts、Hibernate、Spring 集成开发宝典》是针对Java企业级应用开发的一套经典教程,其核心在于讲解如何在Eclipse环境下整合Struts、Hibernate和Spring这三个主流框架,构建高效、灵活的企业级应用程序...

    struts2+spring+hibernate 整合的jar包

    1. **配置环境**:确保所有必需的jar包都在项目类路径中,包括Struts2、Spring、Hibernate及相关依赖库。 2. **创建Spring配置文件**:配置Spring的ApplicationContext,定义Bean,包括DAO、Service以及事务管理器...

    struts2的详细讲解

    2. **Action和Result**:在Struts2中,Action类是处理请求的核心,每个Action对应一个特定的业务操作。当用户发送请求时,Struts2会根据配置找到相应的Action进行处理。处理完成后,Action返回一个Result,Result...

    Struts,Hibernate,Spring集成开发宝典.pdf

    通过实际案例,读者将学习到如何配置Struts的ActionServlet、Struts配置文件,如何在Hibernate中配置SessionFactory,以及如何利用Spring管理Struts的Action实例和Hibernate的Session。书中还会涉及Spring的事务管理...

    struts1,struts2,spring,hibernate

    Struts1、Struts2、Spring和Hibernate是Java Web开发中的四大框架,它们各自承担着不同的职责,共同构建了一个强大的企业级应用体系。 Struts1是Apache组织开发的一个开源MVC框架,它使得Java Web应用程序的开发...

    spring+struts2整合源码

    在Struts2中,Action类是处理用户请求的核心。当使用Spring整合时,Action类通常不再直接依赖于Service,而是通过@Autowired注解从Spring容器中注入Service。例如: ```java @Controller public class MyAction ...

    基于Struts2+Spring+Hibernate+MySql的注册登录系统.zip

    在SSH系统中,Spring主要负责管理整个应用的组件,包括Struts2的Action、Hibernate的数据访问对象(DAO)等。通过Spring的IoC容器,我们可以实现松耦合和更好的测试性。同时,Spring还提供了与Hibernate的集成,简化...

    开发Struts 2+Spring应用

    1. 配置 Struts 2 和 Spring:讲解如何在项目的配置文件中设置 Struts 2 和 Spring,包括 struts.xml 和 spring.xml。 2. 创建 Struts 2 Action:介绍如何定义一个 Struts 2 的 Action 类,并利用 Spring 进行依赖...

    struts+hibernate+spring集成实现分页

    SSH(Struts、Spring、Hibernate)集成是Java Web开发中的常见模式,用于创建复杂的业务逻辑和数据管理。在本资料中,我们将深入探讨如何利用这三大框架实现分页功能。 首先,Struts作为MVC(模型-视图-控制器)...

    第28讲--Struts与Spring集成方案2(Spring集成Struts)

    2. **使用Spring-Struts集成库**: Spring社区提供了spring-struts库,这个库包含了一些专门用于整合Struts和Spring的类和标签库。通过使用这个库,可以方便地在Struts的Action配置中声明Spring的bean,使Spring...

    STRUTS2+SPRING+HIBERNATE代码及教材.

    4. **SSH整合**:如何在Struts2中使用Spring的AOP和DI,以及如何将Hibernate集成到Spring中,实现数据访问层的管理。 5. **实战项目**:可能包含一个完整的SSH整合示例项目,包括数据库设计、业务逻辑实现和前端展示...

Global site tag (gtag.js) - Google Analytics