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

问题

  • 对于

    1. 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
    1. <context-param>
    2. <param-name>contextConfigLocation</param-name>
    3. <param-value>classpath:applicationContext.xml</param-value>
    4. </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. svn问题汇总

    1 svn图标 2 问题 SVN删除文件 一.本地删除SVN删除文件中的本地删除,指的是在客户端delete了一个文件,但还没有commit,使用revert来撤销删除. 二.服务器删除1.通过本地删 ...

  2. 图像处理之规则裁剪(Resize)

    1 图像裁剪 在实际工作中,经常需要根据研究工作要求对图像进行裁剪(Subset Image),按照实际图像分幅裁剪的过程,可以将图像分幅裁剪分为两种类型:规则分幅裁剪(Rectangle Subse ...

  3. Linux掉电处理

    在嵌入式设备中,掉电处理一直是一项比较麻烦的工作,在具有Linux系统的设备中,系统的种种数据的处理更是增加掉电处理的难度.现在做以下几点总结,再遇到类似问题可以做个参考. 1,系统启动的处理 在系统 ...

  4. mysql、mybatis遇到问题集合

    1.错误描述 使用JDBC连接MySql时出现:The server time zone value '�й���׼ʱ��' is unrecognized or represents more th ...

  5. 构造方法和一般方法的区别(面试)-----java基础知识总结

    构造方法:对象创建时,就会调用与之对应的构造方法,对对象进行初始化: 一般方法:对象创建后,需要方法功能时才会调用. 构造方法,在对象创建时,会调用且只调用一次. 一般方法,对象创建后,可以被调用多次 ...

  6. bzoj千题计划205:bzoj1966: [Ahoi2005]VIRUS 病毒检测

    http://www.lydsy.com/JudgeOnline/problem.php?id=1966 f[i][j] 表示s的前i个和t的前j个是否匹配 转移看代码 注意初始化: f[0][0]= ...

  7. bzoj千题计划199:bzoj1055: [HAOI2008]玩具取名

    http://www.lydsy.com/JudgeOnline/problem.php?id=1055 区间DP dp[i][j][k] 表示区间[i,j]能否合成k #include<cst ...

  8. Java迭代器用法

    public class Test01 { public static void main(String[] args) { List list = new ArrayList(); list.add ...

  9. JS模块化写法(转)

    一.原始写法 模块就是实现特定功能的一组方法. 只要把不同的函数(以及记录状态的变量)简单地放在一起,就算是一个模块. function m1(){ //... } function m2(){ // ...

  10. 使用Sysmon和Splunk探测网络环境中横向渗透

    当前很难在网络中探测攻击者横向渗透,其中原因有很难获取必要的日志和区别正常与恶意行为.本篇文章介绍通过部署Sysmon并将日志发送到SIEM来探测横向渗透. 工具: Sysmon + Splunk l ...