上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 依赖注入顺序图