`
withoutmewang
  • 浏览: 8348 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
最近访客 更多访客>>
社区版块
存档分类

spring配置文件在WEB-INF目录下,测试环境的搭建

    博客分类:
  • Java
阅读更多
    刚到新的公司,新的系统,新的框架,慢慢熟悉之后,很多问题不顺手。
  • 配置信息
    系统基于struts/spring/ibatis。没有测试框架,没有强制编写测试。但一次次忍受Tomcat重起的痛苦后,决定自己搭建测试框架,测试servic/dao。
系统的配置文件布局类似于spring官网JPetstore应用,看过代码的人一定清楚它的布局:
xml 代码
  1. -jpetstore  
  2.     -WEB-INF  
  3.        applicationContext.xml  
  4.        dataAccessContext-local.xml  
  5.        jdbc.properties  
  6.        sql-map-config.xml  

同时,spring为了顺利加载jdbc.properties/sql-map-config.xml,需要在applicationContext.xml调整一下路径
xml 代码
  1. <!-- spring加载ibatis配置文件时的路径设置  -->
  2. <bean id="sqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">  
  3.     <property name="configLocation" value="WEB-INF/sql-map-config.xml"/>  
  4.     <property name="dataSource" ref="dataSource"/>  
  5. </bean>  


其实这样存放配置文件的路径没有什么大碍,至少在Web Server上运行是没问题的。
  • 搭建测试框架
    创建DaoTestBase继承AbstractTransactionalDataSourceSpringContextTests
java 代码
 
  1. public class DaoTestBase extends AbstractTransactionalDataSourceSpringContextTests {  
  2.     protected String[] getConfigLocations() {  
  3.         return new String[] {   
  4.                 "classpath*:applicationContext.xml",  
  5.                 "classpath*:dataAccessContext-local.xml",   
  6.                 "classpath*:applicationContext-test.xml" };  
  7.     }  
  8. }  

    测试类继承DaoTestBase,编写测试代码
java 代码
 
  1. public class MyDaoTest extends DaoTestBase {  
  2.     private MyDao myDao;  
  3.   
  4.     public void testCRUD() {  
  5.         // your test code here  
  6.     }  
  7.   
  8.     public void setMyDao(MyDao myDao) {  
  9.         this.myDao= myDao;  
  10.     }  
  11. }  
  • 问题
  1.  运行MyDaoTest 时,提示applicationContext.xml/dataAccessContext-local.xml加载不到。这时候手工将applicationContext.xml/dataAccessContext-local.xml拷贝到classpath目录,文件是加载到了。
  2.     但是在applicationContext.xml/dataAccessContext-local.xml文件中加载jdbc.properties/sql-map-config.xml时,又存在路径问题了。
要解决问题1,其实可以在DaoTestBase中使用URL改变查找路径的实现方式

java 代码
  1. private static URL appURL = ServiceTestBase.class.getClassLoader().getResource("");  

但这种方式,问题2是解决不了的。除非手工修改
applicationContext.xml/dataAccessContext-local.xml中的路径。
  • 解决办法
使用ant,将applicationContext.xml、dataAccessContext-local.xmljdbc.properties、sql-map-config.xml拷贝到classpath目录。同时,替换applicationContext.xml、dataAccessContext-local.xml文件的路径属性。大致的代码为:
xml 代码
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <project name="project-name" default="edit">  
  3.     <property name="src.dir" value="WebRoot/WEB-INF" />  
  4.     <property name="dist.dir" value="WebRoot/WEB-INF/classes" />  
  5.     <property name="spring.xml" value="applicationContext.xml" />  
  6.     <property name="spring-db.xml" value="dataAccessContext-local.xml" />  
  7.     <property name="ibatis.xml" value="sql-map-config.xml" />  
  8.   
  9.     <target name="clean" description="删除dist目录下目标文件">  
  10.         <delete file="${dist.dir}/${spring.xml}" />  
  11.         <delete file="${dist.dir}/${spring-db.xml}" />  
  12.         <delete file="${dist.dir}/${ibatis.xml}" />  
  13.     </target>  
  14.   
  15.     <target name="copy" depends="clean" description="拷贝源文件到目标目录">  
  16.         <copy file="${src.dir}/${spring.xml}" tofile="${dist.dir}/${spring.xml}" encoding="utf-8" />  
  17.         <copy file="${src.dir}/${spring-db.xml}" tofile="${dist.dir}/${spring-db.xml}" encoding="utf-8" />  
  18.         <copy file="${src.dir}/${ibatis.xml}" tofile="${dist.dir}/${ibatis.xml}" encoding="utf-8" />  
  19.     </target>  
  20.   
  21.     <target name="edit" depends="copy" description="修改目标文件的内容">  
  22.         <replace file="${dist.dir}/${spring.xml}" token="WEB-INF/classes/jdbc.properties" value="jdbc.properties" encoding="utf-8" />  
  23.         <replace file="${dist.dir}/${spring-db.xml}" token="WEB-INF/sql-map-config.xml" value="classpath:sql-map-config.xml" encoding="utf-8" />  
  24.     </target>  
  25. </project>  

每次
从cvs获取文件或本地修改spring/ibatis配置文件后,运行当前ant文件。
然后任意的运行你的测试类

运行Oracle速度慢,且受数据库记录影响。所以下一步是加入hsql。

分享到:
评论
3 楼 hongyang070 2011-10-17  
hongyuan19 写道
AbstractTransactionalDataSourceSpringContextTests使用spring集成测试时候可以通过以下方式载入WEB-INF下的配置文件:
protected String[] getConfigLocations() {   
        return new String[] {    
                "file:WebRoot/WEB-INF/applicationContext.xml"};   
    }

其中file:表示相对于项目根目录。



感谢!!!
2 楼 hongyuan19 2010-01-18  
AbstractTransactionalDataSourceSpringContextTests使用spring集成测试时候可以通过以下方式载入WEB-INF下的配置文件:
protected String[] getConfigLocations() {   
        return new String[] {    
                "file:WebRoot/WEB-INF/applicationContext.xml"};   
    }

其中file:表示相对于项目根目录。

1 楼 huangrenhui005 2008-06-19  
人才啊

一年前路过...

相关推荐

    spring-mvc-step-by-step(PDF)

    - src/main/webapp/WEB-INF:存放Web相关的配置文件,如web.xml和Spring的配置文件。 - src/main/webapp/WEB-INF/classes:存放编译后的class文件。 - src/main/webapp/WEB-INF/lib:存放第三方库的jar包。 ##### ...

    快速搭建一个简易的spring web工程

    在src/main/webapp/WEB-INF/spring/appServlet目录下创建servlet-context.xml文件,配置Spring MVC的处理器映射器、视图解析器等: ```xml &lt;beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi...

    web框架搭建.pdf

    将Spring解压缩以后,我们需要将spring-framework-2.5.6-with-dependencies\spring-framework-2.5.6\dist目录中的spring.jar复制到Web项目的WEB-INF/lib目录中。然后,我们需要复制spring-framework-2.5.6-with-...

    搭建基础Struts2开发环境的必需jar包,如需完整的文件请移步官网下载

    在搭建Struts2开发环境时,必需的jar包是关键组成部分。这些jar文件包含了框架运行所需的各种类库,包括核心功能、依赖的第三方库以及配置工具等。以下是一些主要的jar包及其作用: 1. **struts2-core.jar**:这是...

    Struts2 Spring Hibernate无冲突Jar包打包(直接放到WEB-INF\lib下)

    本压缩包文件提供了适用于S2SH(Struts2、Spring、Hibernate)工程的无冲突Jar包,这意味着开发者无需担心版本兼容性问题,可以直接将其放入`WEB-INF\lib`目录下,用于构建或更新现有的Web应用。值得注意的是,在...

    spring mvc 环境搭建

    - 配置 Spring 的上下文监听器,以便在应用启动时加载 Spring 配置文件。 ```xml &lt;listener-class&gt;org.springframework.web.context.ContextLoaderListener&lt;/listener-class&gt; &lt;context-param&gt; &lt;param-name...

    Spring在MyEclipse中的配置

    - **指定JAR安装目录**:通常情况下,这些JAR包会被放置在项目的`WebRoot/WEB-INF/lib`目录下。 ##### 2. 添加TLD标签库 除了JAR包外,Spring还提供了一系列TLD标签库,用于在JSP页面中使用Spring标签。通过...

    web项目环境搭建小测试

    3. **配置Struts2**:在项目的`src/main/resources`目录下创建`struts.xml`文件,这是Struts2的配置文件。在此文件中,我们可以定义拦截器、结果类型、包配置等。 4. **创建Action类**:Action类是Struts2的核心...

    SPRING MVC配置过程

    -- 可以自定义 servlet.xml 配置文件的位置和名称,默认为 WEB-INF 目录下,名称为 [&lt;servlet-name&gt;]-servlet.xml,如 spring-servlet.xml --&gt; &lt;init-param&gt; &lt;param-name&gt;contextConfigLocation&lt;/param-name&gt; ...

    spring4+springMVC+Mybatis项目搭建以及测试demo

    其中,`webapp/WEB-INF`下会有`web.xml`配置文件,`src/main/resources`下会有Spring和Mybatis的配置文件。 5. **环境配置** 开发SSM项目通常需要JDK、Maven或Gradle(构建工具)、Tomcat(应用服务器)以及MySQL...

    Spring Tool Suite 搭建tomcat配置调试环境

    打开src/main/webapp/WEB-INF/web.xml文件,添加如下内容: ```xml &lt;web-app&gt; &lt;servlet-name&gt;HelloWorldServlet&lt;/servlet-name&gt; &lt;servlet-class&gt;com.example.helloworld.HelloWorldServlet&lt;/servlet-class&gt; ...

    java快速搭建spring-mvc所需的配置文件

    本篇文章将详细解析在Java环境下快速搭建Spring MVC所需的关键配置文件,包括`web.xml`、`spring-mvc.xml`、`spring-service.xml`、`spring-dao.xml`以及*mapper.xml文件。 首先,`web.xml`是Java Web应用的部署...

    S2SH的配置文件

    在Spring配置文件中,我们通过`LocalSessionFactoryBean`来定义`sessionFactory`,并通过`configLocation`属性指定Hibernate配置文件的位置。 ##### 2. Struts配置文件 - **位置**:Struts配置文件一般位于项目的根...

    java strurs+hibernate+spring环境搭建与配置

    - 创建Spring配置文件(如`applicationContext.xml`),定义Bean及其依赖关系。在本例中,`LoginService`和其实现类`LoginServiceImpl`可能需要被定义为Spring管理的Bean。 3. **Hibernate配置**: - 添加...

    Spring mvc 环境搭建(maven构建)

    1. 在 `src/main/webapp/WEB-INF` 目录下创建 `web.xml` 文件,配置 DispatcherServlet 和 ContextLoaderListener: ```xml &lt;web-app&gt; &lt;listener-class&gt;org.springframework.web.context.ContextLoaderListener...

    第25,26讲 --搭建和配置Spring与Hibernate整合的环境

    在本主题中,我们将深入探讨如何搭建和配置一个集成了Spring和Hibernate的开发环境。Spring是一个全面的Java应用框架,提供了依赖注入、AOP(面向切面编程)以及丰富的工具支持,而Hibernate则是一个强大的对象关系...

    Spring-Struts2项目环境搭建

    3. **配置Struts2**:在`WEB-INF`目录下创建`struts.xml`,这是Struts2的配置文件,用于定义Action类和结果页面。 4. **配置Spring**:创建`beans.xml`文件,作为Spring的配置文件,定义bean及其依赖关系。 5. **...

    spring、struts、ibatis框架搭建流程

    - **Spring配置文件**:在项目的`WEB-INF/spring/`目录下创建或修改`applicationContext.xml`文件,配置Spring的Bean管理。 - **Struts配置文件**:创建或修改项目的`WEB-INF/struts.xml`文件,配置Action和结果。 -...

    spring MVC配置详解

    -- 可以自定义 servlet.xml 配置文件的位置和名称,默认为 WEB-INF 目录下,名称为[&lt;servlet-name&gt;]-servlet.xml,如 spring-servlet.xml --&gt; &lt;init-param&gt; &lt;param-name&gt;contextConfigLocation&lt;/param-name&gt; ...

Global site tag (gtag.js) - Google Analytics