最近在学习Struts2,进行测试驱动开发,对于struts2与Spring集成的测试,Struts2给出了一个插件struts2-junit-plugin-2.1.8.1.jar,这个插件需要spring-test.jar包的支持,所有需要测试的Action类都继承StrutsSpringTestCase。这个测试要求只能用个application.xml文件,而且必须放到类路径根目录下面。在我们开发中往往编写许多以application开头的部署文件,一般也不在类路径下面存放,例如我一般习惯在WEB-INF目录下建立一个config文件夹,将spring的部署文件都放到config文件夹下面。但是用StrutsSpringTestCase类不能解决改问题,我查看了一下StrutsSpringTestCase的原代码,代码如下:
public abstract class StrutsSpringTestCase extends StrutsTestCase {
private static final String DEFAULT_CONTEXT_LOCATION = "classpath*:applicationContext.xml";
protected static ApplicationContext applicationContext;
protected void setupBeforeInitDispatcher() throws Exception {
//init context
GenericXmlContextLoader xmlContextLoader = new GenericXmlContextLoader();
applicationContext = xmlContextLoader.loadContext(getContextLocations());
servletContext.setAttribute(WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE, applicationContext);
}
protected String getContextLocations() {
return DEFAULT_CONTEXT_LOCATION;
}
}
我们只要写一个继承类,重载setupBeforeInitDispatcher()方法就可以解决改问题了,如果我们有两个配置文件applicationContext.xml、applicationContext-other.xml,我们就可以这样写:
@Override
protected void setupBeforeInitDispatcher() throws Exception {
GenericXmlContextLoader xmlContextLoader = new GenericXmlContextLoader();
applicationContext = xmlContextLoader.loadContext(new String[]{"applicationContext.xml,","applicationContext-other.xml,"});
servletContext.setAttribute(WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE, applicationContext);
}
这样我们就解决了多个配置文件的问题,但是还有一个,我们一开始也不能确定有几个配置文件,这个方法还是不通用,需要再次重构,这样,我决定写一个方法,从config文件下读取文件,所有以application开通的文件组成一个字符串数组,这样就不需要修改改类了。代码如下:
public class SpringBeanFactoryMock extends StrutsSpringTestCase {
@Override
public void setUp() throws Exception {
super.setUp();
}
@Override
protected void setupBeforeInitDispatcher() throws Exception {
GenericXmlContextLoader xmlContextLoader = new GenericXmlContextLoader();
applicationContext = xmlContextLoader.loadContext(getContextLocation());
servletContext.setAttribute(WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE, applicationContext);
}
public String[] getContextLocation(){
URL classUrl = SpringBeanFactoryMock.class.getResource("");
String path = classUrl.getPath();
try {
path = URLDecoder.decode(path, "UTF-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
path = path.substring(1 , path.indexOf("WEB-INF"))+ "WEB-INF/";
File configPath = new File(path);
String[] applicationContexts = configPath.list(new FilenameFilter(){
public boolean accept(File dir, String name){
if(name.toLowerCase().startsWith("applicationcontext")){
return true;
}
return false;
}
});
for(int i=0;i<applicationContexts.length;i++){
applicationContexts[i] = "file:"+path + applicationContexts[i];
}
return applicationContexts;
}
}
以后我们测试Struts2的Action类时候,只要继承SpringBeanFactoryMock类就可以了。
分享到:
相关推荐
4. **AOP集成**:结合Spring的AOP能力,可以为Struts2的Action提供切面增强,如性能监控、日志记录等。 5. **简化配置**:通过插件,开发者不再需要在struts.xml或web.xml中显式配置Action的类名和实例,只需在...
总的来说,"struts2+spring+mybatis+easyui"的实现是一个标准的Java Web项目结构,它利用Maven进行构建管理,通过整合四个组件,实现了后端的业务逻辑处理、数据访问和前端的用户界面展示。这种架构在实际开发中具有...
Struts2提供了MVC(模型-视图-控制器)架构,帮助开发者更好地组织和管理应用程序逻辑,而Spring则是一个全面的后端框架,提供依赖注入、AOP(面向切面编程)、事务管理等特性。 在"Struts2+Spring练习"项目中,...
首先,Struts2是一个基于MVC(Model-View-Controller)设计模式的Java Web框架,它提供了强大的请求处理和页面展示功能。Struts2通过Action类和配置文件控制应用程序的行为,使得业务逻辑与视图层分离,提高了代码的...
尽管标题和描述中的重复信息可能是一个错误,但我们可以深入探讨Struts2、Spring以及Spring与Struts2结合使用时的关键知识点。 ### Struts2框架 Struts2是Apache软件基金会维护的一个开源框架,用于构建企业级Java...
在构建SSH框架时,每个框架都扮演着不同的角色,以提供一个高效、可扩展的后端架构。现在我们来详细了解一下搭建SSH框架过程中,这三个关键组件以及所提及的包的作用。 首先,Struts2作为MVC(模型-视图-控制器)...
这两种框架结合Spring,旨在提供一个强大的、可扩展的、易于维护的后端架构。 首先,让我们详细了解一下每个组件: 1. **Struts2**:这是一个MVC(Model-View-Controller)框架,负责处理用户请求并将其映射到相应...
这个“Struts2+Spring3+MyBatis结合项目”是一个实战示例,旨在帮助开发者深入理解和实践这三大框架的集成与应用。 首先,Struts2是一个基于MVC(Model-View-Controller)设计模式的开源Web应用框架。它主要负责...
Struts2、Spring和iBatis是Java Web开发中三个非常重要的开源框架,它们共同构建了一个灵活、可扩展且高效的应用程序开发环境。这个“struts2+spring+iBatis框架包”集成了这三个框架,使得开发者能够快速构建基于...
Struts2 和 Spring 的整合是Java Web开发中的常见实践,这两种框架的结合可以极大地提高应用的可维护性和灵活性。在本文中,我们将深入探讨如何实现Struts2与Spring的集成,以及利用拦截器来增强应用的功能。 首先...
Struts2是一个MVC(Model-View-Controller)框架,主要用于控制应用程序的流程,而Spring则是一个全面的后端解决方案,包括依赖注入、AOP(面向切面编程)、事务管理等。将这两个框架整合在一起,可以充分利用它们...
标题"struts2+spring2+ibatis"表明这是一个关于如何整合这三个框架的实例教程。这个例子可能是为了演示如何在实际项目中将它们结合起来,以实现更高效的开发流程。 描述中提到"struts2整合sprint+ibatis 框架的简单...
在"struts2结合spring的jar包.rar"中,我们看到的是一些关键库文件,这些文件是整合Struts2和Spring所必需的: 1. **struts2-core-2.5.26.jar**:这是Struts2的核心库,包含了Struts2框架的基础组件,如Action、...
在实际项目中,`teststruts` 文件可能包含了一个简单的示例应用,演示了如何在Struts2和Spring集成环境中配置和运行一个基本的Web应用。通常,这会涉及到以下步骤: 1. **配置Spring**:创建Spring的配置文件,定义...
Struts2与Spring3的整合,使得我们可以利用Spring来管理Struts2的Action,从而实现依赖注入,提高代码的可测试性和可维护性。 Spring3则是企业级应用的全面解决方案,包括IoC(Inversion of Control,控制反转)和...
这个"quartz.*整合struts2、spring一个的demo"示例旨在演示如何将这三个组件集成到一起,实现一个完整的任务调度系统。 首先,我们来看Quartz的集成。Quartz的核心概念包括Job(工作)、Trigger(触发器)和...
Struts2、Spring和Hibernate是Java Web开发中的三大框架,它们各自在应用程序的...这个案例提供了一个实用的起点,帮助开发者理解如何在实际项目中将Struts2、Spring和Hibernate结合,以实现高效的Java Web应用开发。
在【压缩包子文件的文件名称列表】中,“v512工作室_刘伟_Hibernate与Struts2和Spring组合开发.pdf”很可能是一份详尽的教程或指南,涵盖了如何在实际项目中结合这三个框架的步骤和最佳实践。 详细知识点可能包括:...
【轻量级Java_EE企业应用实战_Struts2_Spring3_Hibernate整合开发】这个主题主要涉及的是Java EE领域中的三大框架——Struts2、Spring3和Hibernate的集成应用,这是构建现代Java后端系统的一种常见方式。这些框架...
Struts2是一个基于MVC(Model-View-Controller)设计模式的Web应用框架,而Spring则是一个全面的Java应用程序框架,尤其以其依赖注入(DI)和面向切面编程(AOP)闻名。当这两个框架结合使用时,通常被称为“SSH”...