零基础学Struts
上QQ阅读APP看书,第一时间看更新

14.4 整合Struts 2和Spring框架

通过整合Struts 2和Spring框架,从而通过Spring容器来管理Struts 2中的Action。该整合充分利用了Spring的IoC特性,是非常优秀的解耦策略。

14.4.1 安装Spring插件完成整合

整合Spring之前首先需要为Web应用添加Spring所需的JAR文件,然后修改“web.xml”文件。通过添加一个Listener,使得Web应用启动时会自动查找WEB-INF目录下的“applicationContext.xml”配置文件,并根据该配置文件来创建Spring容器,代码如下所示。

        <? xml version="1.0" encoding="UTF-8"? >
        <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
              xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
              http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
              <! --定义核心Filter FilterDispatcher -->
              <filter>
                    <! -- 定义核心Filter的名称 -->
                    <filter-name>struts2</filter-name>
                    <! --定义核心Filter的实现类 -->
                    <filter-class>
                            org.apache.struts2.dispatcher.FilterDispatcher
                    </filter-class>
              </filter>
              <filter-mapping>
                    <! --核心Filter的名称 -->
                    <filter-name>struts2</filter-name>
                    <! --使用该核心Filter来接受所有的Web请求 -->
                    <url-pattern>/*</url-pattern>
              </filter-mapping>
              <! -- 初始化Spring容器 -->
              <listener>
                      <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
              </listener>
        </web-app>

安装Struts 2的Spring插件非常简单,只需将struts-2.0.11.1的lib目录下的“struts2-spring-plugin-2.0.11.1.jar”复制到WEB-INF\lib目录下即可。

14.4.2 整合策略

在没有使用Spring框架之前,使用工厂模式来创建业务逻辑组件实例,从而将控制器与业务逻辑组件分离开。同样使用工厂模式创建DAO组件实例,从而将业务逻辑与DAO组件分离开。使用工厂模式可以大大降低耦合度,如图14.2所示。

使用Spring框架之后,就可以使用Spring来管理控制器,并通过依赖注入的方式为控制器注入业务逻辑组件实例。同样也可以通过依赖注入为业务逻辑组件注入DAO组件实例,如图14.3所示。

图14.2 工厂模式顺序图

图14.3 依赖注入顺序图