`

一致开发和运行配置

阅读更多

现在采用eclipse进行开发,在运行环境在tomcat中,目录结构如下

project

|----src

|----web

|----|----WEB-INF

|----|----|----classes

|----|----|----conf

系统在运行时所有的配置文件在conf目录下,在开发过程中采用junit进行测试,出现问题就是spring的配置文件没有办法进行配置,因为开发查询文件的目录在classes目录下,而在运行时web目录下和classes下都可以,所以没有办法编写配置文件的目录,而且为了防止程序部署的简单性,开发环境和运行环境不需要修改配置文件。

考虑到造成这个问题的原因是ClassLoader的资源查询目录不同,所以从ClassLoader入手,自定义ClassLoader类,定义类如下,因为考虑到只是配置文件不同,采用如下方式:

public class ProjectJunitClassLoader extends ClassLoader {
 private String dir;

 public ProjectJunitClassLoader(ClassLoader parent, String dir) {
  super(parent);
  this.dir = dir;
 }

 protected URL findResource(String name) {
  try {
   URL url = super.findResource(name);
   if (url != null) {
    return url;
   }
   url = new URL("file:///" + converName(name));
   return url;
  } catch (MalformedURLException mue) {
   return null;
  }
 }

 private String converName(String name) {
  StringBuffer sb = new StringBuffer(dir);
  sb.append(File.separator + name);
  return sb.toString();
 }

}

这样可以通过传入我们的web的目录就可以进行文件的加载操作,还有一个问题就是如何把ClassLoader在eclipse总是用,考虑到junit中添加了@BeforeClass在运行时只运新一次,在里面添加如下代码:

 static ClassLoader oldLoader = null;
 @BeforeClass
 public static void setupClassLoader(){
  oldLoader = Thread.currentThread().getContextClassLoader();
  //new ClassLoader
  String classPath = oldLoader.getResource(".").getPath();
  String confPath = classPath.substring(0, classPath.length()-17);
  Thread.currentThread().setContextClassLoader(new ProjectJunitClassLoader(oldLoader,confPath));
 }
 
 @AfterClass
 public void uninstallClassLoader(){
  Thread.currentThread().setContextClassLoader(oldLoader);
 }

这样就可以解决此问题,新添加的ClassLoader只是在原来的classLoader没有找到的情况下,进行这个操作,而且只是Junit进行使用,完美解决此问题。

分享到:
评论

相关推荐

    Servlet JSP开发运行环境配置

    ### Servlet JSP开发运行环境配置详解 #### 一、概述 Servlet 和 JSP 是 Java Web 开发中的核心技术,为了能够顺利地进行开发与部署,必须首先...在实际开发过程中,根据具体需求还可能涉及到更多的配置和技术细节。

    vim配置C/C++开发环境.zip

    本文将详细讲解如何配置Vim为C/C++的开发环境,使其具备类似IDE的功能,如函数补全、小括号补全等。 首先,我们需要了解Vim的基本操作,它是一个命令行下的文本编辑器,可以通过键盘快捷键进行高效的文本处理。在...

    java 运行环境配置 txt

    从给定的文件信息中,我们可以提炼出关于Java运行环境配置的关键知识点,这些知识点对于初学者和有经验的开发者在设置或优化Java开发环境时都至关重要。 ### Java运行环境配置 #### 1. JDK(Java Development Kit...

    Java运行环境配置

    为了能够在计算机上开发和运行Java程序,我们需要正确地配置Java运行环境。本文将详细介绍如何设置Java运行环境,包括配置JAVA_HOME、Classpath以及Path等环境变量。 #### 二、Java运行环境的基本概念 1. **JDK ...

    Java开发环境配置批处理

    Java开发环境配置批处理是Java开发者在安装和设置工作环境时常常会遇到的一个步骤,它主要是为了简化和自动化Java开发所需的环境变量配置过程。本文将详细介绍如何创建和使用批处理文件来配置Java开发环境,以及...

    配置mapreduce开发环境(简单易懂,轻松上手)

    本文详细介绍了如何配置MapReduce开发环境的过程,包括搭建基础环境、配置网络、安装和配置MyEclipse插件、编写和运行MapReduce程序等内容。遵循本文步骤,即使是初学者也能轻松地配置出一个完整的MapReduce开发环境...

    Tuxedo中间件开发与配置(前一部分)

    通过深入学习这本书的前五章,开发者能够全面了解Tuxedo中间件的基本概念,掌握其配置和管理方法,为后续的Tuxedo应用开发打下坚实的基础。同时,对于那些已经在使用Tuxedo的团队,这本书也提供了宝贵的优化和维护...

    SAP PI 开发系统和生产系统SLD数据自动同步的配置

    在SAP PI环境中,保持SLD数据的准确性和一致性至关重要,因为这些数据直接影响到接口开发和集成流程的设计。 **SAP PI开发系统与生产系统SLD数据自动同步的重要性** 手动维护SLD数据在多个环境之间可能导致数据不...

    eclipse开发环境配置

    这些文件是配置和使用Ivy的关键,它们描述了项目的依赖和仓库设置。 总之,Eclipse开发环境配置涉及到安装和配置IvyDE插件,编写和管理`ivy.xml`和`ivysettings.xml`文件,以及在Eclipse项目属性中设置Ivy构建路径...

    关于ArcGIS Engine开发过程中版本不一致问题的参考解决方案

    ### ArcGIS Engine开发过程中版本不一致问题的详细解决方案 ...通过上述详尽的解决方案及预防措施,可以有效地解决ArcGIS Engine开发过程中的版本不一致问题,提高开发效率,确保应用程序稳定运行。

    Tuxedo中间件开发与配置

    在《Tuxedo中间件开发与配置.pdf》文档中,你可能找到更详细的步骤指导和实例代码,帮助你更好地理解和实践Tuxedo的开发与配置。同时,`www.pudn.com.txt`可能是相关的资源链接或补充资料,可能包含了更多的案例研究...

    开发环境配置

    文档修改记录和编写目的部分未提供具体内容,因此我们直接进入开发环境配置的详细说明。 **1. 开发环境配置** 开发环境配置是软件开发过程中的重要环节,它确保开发者能够在一个稳定、高效的环境中进行编码、测试...

    ifs开发配置手册

    - **集成JBOSS**:将MyEclipse与前面配置好的JBOSS服务器集成起来,便于开发和调试。 #### 八、布署SVN版本控制器及工作空间 版本控制系统对于团队协作至关重要,手册中介绍了如何部署SVN及其工作空间。 - **安装...

    nc开发的配置

    在NC(用友U8)开发中,配置审批流是一项关键任务,这涉及到系统的业务流程自动化和权限控制。本文将详细解析"nc开发的配置",特别是关于"nc审批流脚本注册"的过程。 首先,我们需要理解审批流单据脚本注册的步骤。在...

    java开发环境的开发配置

    在IT领域,特别是软件开发行业中,Java作为一种广泛使用的编程语言,其开发环境的配置是每位开发者必须掌握的基础技能。本文将深入解析“java开发环境的开发配置”这一主题,涵盖标题与描述中提及的关键知识点,旨在...

    Eclipse+Websphere6整合开发详细配置文档

    在本文档中,我们将深入探讨如何在Eclipse集成开发环境中配置和整合IBM Websphere Application Server 6(WAS 6)进行应用部署。这个过程包括了WAS的基础配置、JDBC提供程序的设定以及数据库的JNDI绑定,这对于在WAS...

    PHP开发环境配置操作手册

    4. **ServerName配置**:修改ServerName的端口号与监听端口保持一致。 5. **Directory权限设置**:调整两个段落的权限配置,允许所有访问。 ### PHP配置 1. **启用Xdebug**:在`php.ini`文件末尾添加Xdebug配置,...

    酒店管理系统 配置管理计划

    计划的目标是通过规范配置管理活动,来维护开发过程的稳定性,保证软件的集成和部署,满足项目委托书以及软件系统需求规格说明书所规定的需求。本文将深入探讨配置管理计划所涵盖的关键内容及其重要性。 组织结构和...

Global site tag (gtag.js) - Google Analytics