此文写下调用spring过程中遇到的一个问题!或许对于入行的人一看觉得我很傻逼吧,这问题谁都会了!但我觉得对于新手(自已)来说,算是一个好思路与好办法!

问题

  • 对于

    test_aa ta = (test_aa) new FileSystemXmlApplicationContext("file:E:/Workspace_newSSH/SSH_jqplot/WebRoot/WEB-INF/applicationContext.xml").getBean("test_aa");

    怎么把file:E:/Workspace_newSSH/SSH_jqplot/WebRoot/WEB-INF/applicationContext.xml改成相对路径!

初始想法(错误的做法)

  1. 获取applicationContext.xml文件在本地的绝对路径或都获取项目在本地的路径
  2. 进行字符串整合
  3. 获得相对路径

初始想法的解决过程(没解决问题)

  • 用System.getProperty("user.dir")?但是这在java运行中是可以获得,但我项目是以tomcat运行的,获得的成了E:/tomcat/bin/SSH_jqplot/WebRoot/WEB-INF
  • 用JdomParse.class.getClassLoader().getResource("").getPath();??但JdomParse识别不了!
  • 用Class.class.getClass().getResource("/WebRoot").getPath()???但系统报Exception in thread "main" java.lang.NullPointerException错误!!
  • 用ServletContext.getRealPath("mypath/filename")???但ServletContext也识别不了!!!
  • 后来也尝试了在jsp文件中获取路径,就是以request来获取,获取出来的成了http://localhost:.....开头的了!

不甘心,目地是可以达到的!但应该怎么做呢?

今天花点了心思去看了下FileSystemXmlApplicationContext与ClassPathXmlApplicationContext,有了点新的想法!尝试了下,竟真的行了!

想法

  • classpath:applicationContext.xml的意思是读取WebRoot\WEB-INF\classes\下的applicationContext.xml文件,也就是Web.xml文件的所在位置那我们可不可以把applicationContext.xml移到WebRoot\WEB-INF\classes\下呢?
  • applicationContext.xml文件是放在WebRoot\WEB-INF\下的,也就是spring默认的读取路径!那我们可不可以修改默认路径呢?
  • 完成上面的操作后把file:E:/Workspace_newSSH/SSH_jqplot/WebRoot/WEB-INF/applicationContext.xml改成classpath:applicationContext.xml这样可不可以运行呢?
  • 若修改上面的配置,那其他用到spring的文件会不会出现问题呢?(或许修改了默认路径不会出现问题呢?)

好,马上试下!

实施过程

  1. 把applicationContext.xml文件复制到src目录下,删除原来在WEB-INF的applicationContext.xml文件。
  2. 修改applicationContext.xml默认的读取路径。在Web.xml文件加入或修改成下面的代码,代码主要意思是,把applicationContext.xml的默认读取路径设置为WebRoot\WEB-INF\classes\applicationContext.xml
    <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:applicationContext.xml</param-value>
    </context-param>
  3. 把file:E:/Workspace_newSSH/SSH_jqplot/WebRoot/WEB-INF/applicationContext.xml改成classpath:applicationContext.xml
  4. 测试

测试的结果为相关的文件都能运行实现其功能!OK!

还没有对FileSystemXmlApplicationContext与ClassPathXmlApplicationContext很熟悉,或许还有更好的办法解决这问题吧!努力学习中!!

如果有什么错误,欢迎大家向我提出!

现还有待解决的问题:

  1. 为什么applicationContext.xml文件在tomcat运行时就不能在WebRoot\WEB-INF\读取而在WebRoot\WEB-INF\classes\就能读取到呢?(加载时应该都是E:/tomcat/bin/主目录才对啊!)
  2. applicationContext.xml放在src目录下与放在WEB-INF目录下是不是都可以的?没关系吗?

正在努力解决问题中.....

小成就之解决调用spring中FileSystemXmlApplicationContext路径问题的更多相关文章

  1. java war包 路径--解决war包中文件路径问题

    https://blog.csdn.net/u013409283/article/details/51480948 转自:http://free-chenwei.iteye.com/blog/1507 ...

  2. 关于spring中配置文件路径的那些事儿

    在项目中我们经常会需要读一些配置文件来获取配置信息,然而对于这些配置文件在项目中存放的位置以及获取这些配置文件的存放路径却经常搞不清楚,自己研究了一下,记录下来以备后用. 测试代码如下 package ...

  3. Spring中的事务操作

    事务的特性 原子性:强调事务的不可分割. 一致性:事务的执行的前后数据的完整性保持一致. 隔离性:一个事务执行的过程中,不应该受到其他事务的干扰. 持久性:事务一旦结束,数据就持久化到数据库. 如果不 ...

  4. (转)Spring中的事务操作

    http://blog.csdn.net/yerenyuan_pku/article/details/70024364 事务的回顾 什么是事务 事务是逻辑上的一组操作,组成这组操作的各个逻辑单元,要么 ...

  5. java 调用bash shell脚本阻塞的小问题的解决

    java  调用bash shell脚本阻塞的小问题的解决 背景 使用java实现的web端,web端相应用户的界面操作,使用java调用bash实现的shell脚本进行实际的操作,操作完成返回执行结 ...

  6. Spring中利用applicationContext.xml文件实例化对象和调用方法

    Spring中实例化对象和调用方法入门 1.jar包和xml的准备 已上传至百度云盘,链接: https://pan.baidu.com/s/1CY0xQq3GLK06iX7tVLnp3Q 提取码: ...

  7. spring中set注入的一些小细节错误

    这是小白偶尔一直null指针的错误,调试了好久,原来是自己对spring注入的不够了解 我相信有很多跟我差不多的初学者会遇上,所以特地写出来,防止有人跟我一样.哈哈,也写上去,以防自己下次还犯这样的错 ...

  8. 解决spring中不同配置文件中存在name或者id相同的bean可能引起的问题

    小总结: 如果启用组件扫描,bean名称不同时,Spring将尝试创建一个bean,即使该类的bean已经在spring-config.xml中定义了. 但是,如果在spring配置文件中定义的bea ...

  9. 170630、springboot编程之普通类中调用spring管理的bean对象

    我们知道如果我们要在一个类使用spring提供的bean对象,我们需要把这个类注入到spring容器中,交给spring容器进行管理,但是在实际当中,我们往往会碰到在一个普通的Java类中,想直接使用 ...

随机推荐

  1. 稳定排序nlogn之归并排序_一维,二维

    稳定排序nlogn之归并排序_一维,二维 稳定排序:排序时间稳定的排序 稳定排序包括:归并排序(nlogn),基数排序[设待排序列为n个记录,d个关键码,关键码的取值范围为radix,则进行链式基数排 ...

  2. webpack实现“热更新”和“热加载”(webpack3.6新增)

    之前的博文有提到怎么样去实现热更新,但是居然要用到另外一个node框架(express)而且新增了一个入口(entry)两个插件(plugin)来实现,大大提高了配置的复杂度,这样其实对使用webpa ...

  3. 第七节 认识SpringMVC中的表单标签

    所谓成熟,就是:你要习惯,任何人的忽冷忽热:也要看淡,任何人的渐行渐远: --胖先生 SpringMVC的表单标签 回顾: JSTL标签 --C标签 FMT标签 自学:JSP如何自定义标签[开源社区当 ...

  4. 转:IOS 基于APNS消息推送原理与实现(JAVA后台)

    Push的原理: Push 的工作机制可以简单的概括为下图   图中,Provider是指某个iPhone软件的Push服务器,这篇文章我将使用.net作为Provider. APNS 是Apple ...

  5. 工具类 | window批处理杀死指定端口进程

    window批处理杀死指定端口进程,注意保存时使用ansi格式,运行输入端口即可 @echo off setlocal enabledelayedexpansion set /p port=请输入端口 ...

  6. 考研:操作系统:进程同步—信号量实现同步互斥(PV操作)

    进程互斥的硬件实现方法

  7. Jquery自定义滚动条插件

    下载地址:http://files.cnblogs.com/files/LoveOrHate/jquery.nicescroll.min.js <script src="jquery. ...

  8. 【NOI】2017 整数(BZOJ 4942,LOJ2302) 压位+线段树

    [题目]#2302. 「NOI2017」整数 [题意]有一个整数x,一开始为0.n次操作,加上a*2^b,或询问2^k位是0或1.\(n \leq 10^6,|a| \leq 10^9,0 \leq ...

  9. 用Java构建一个简单的WebSocket聊天项目之新增HTTP接口调度

    采用框架 我们整个Demo基本不需要大家花费太多时间,就可以实现以下的功能. 用户token登录校验 自我聊天 点对点聊天 群聊 获取在线用户数与用户标签列表 发送系统通知 首先,我们需要介绍一下我们 ...

  10. 八、mini2440裸机程序之UART(2)UART0与PC串口通信【转】

    转自:http://blog.csdn.net/shengnan_wu/article/details/8309417 版权声明:本文为博主原创文章,未经博主允许不得转载. 1.相关原理图 2.相关寄 ...