Spring xml配置文件相对路径问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring xml配置文件相对路径问题相关的知识,希望对你有一定的参考价值。
本人一个RCP项目,在Spring appicaionContext.xml配置时遇到路径问题。
绝对路径可行,相对路径有问题。SpringDemo.java(com.xxx.spring.log包下)中用ApplicationContext获取Bean,ApplicationContext act=new FileSystemXmlApplicationContext("applicationContext.xml");applicationContext.xml文件在src目录下,请问如何设置相对路径?(譬如"../../../../src/applicationContext.xml")???
如果是桌面程序,可以把applicationContext.xml放到classpath路径下,例如打包到jar里面。
使用ClassPathXmlApplicationContext读取就可以了。
../../这样的相对路径,不适合在桌面程序上使用。
如果一定要用FileSystemXmlApplicationContext设定向对路径,
applicationContext.xml仅仅是在src下还不够,需要在class文件所在目录下。
相对路径的设定,需要以class文件路径为基准。 参考技术A 介绍你用 HttpServletRequest 对象得到资源文件,如“applicationContext.xml”的路径
1、如果你可以得到 HttpServletRequest 对象,则用下面的方式
String path=request.getRealPath("applicationContext.xml");
2、如果你不能直接得到 HttpServletRequest 对象,那么通过下面的方式可以得到。
HttpServletRequest request=WebContextFactory.get().getHttpServletRequest();
WebContextFactory,是 dwr.jar 中的一个类,
当然如果你不想在项目中增加包,那就看看这个类的源代码,看在一个普通了中是如何得到 HttpServletRequest 对象的。
欢迎交流。 参考技术B ApplicationContext act=new ClassPathXmlApplicationContext("applicationContext.xml");
xxx=(xxxx)act.getBean("xxx"); 参考技术C 大哥 FileSystemXmlApplicationContext是根据操作系统的文件路径的 ,要把applicationContext.xml的具体位置,C:\***\**\applicationContext.xml
spring配置文件applicationContext.xml的路径设置
先看web.xml 配置
1 <!-- 加载Spring容器配置 --> 2 <listener> 3 <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 4 </listener> 5 6 <!-- 设置Spring容器加载所有的配置文件的路径 --> 7 <context-param> 8 <param-name>contextConfigLocation</param-name> 9 <param-value>classpath*:config/applicationContext.xml</param-value> 10 </context-param>
目录结构
当我这样配置的时候,无论怎么修改web.xml中的路径设置,启动tomcat,始终无法加载applicationContext.xml.痛苦的折磨后,我发现部署到tomcat里面的只有webRoot目录下的文件。而config文件夹根本没有部署到tomcat里面。
当我把config文件夹移动到WebRoot下面后,发现还是不对,依然无法加载applicationContext.xml文件。原来是【classpath*:config/applicationContext.xml】文件路径写错了。去掉【classpath*:】之后,就可以正确加载。
classpath:会加载类路径下的资源文件。所有将applicationContext.xml放到src下面,这样的配置系统就可以正确加载。(部署到tomcat后在web-inf/classes文件夹下)
classpath*: 会加载src文件下的资源,还会加载包括jar文件的所有资源。
以上是关于Spring xml配置文件相对路径问题的主要内容,如果未能解决你的问题,请参考以下文章
如何在基于xml的spring配置中为hibernate.javax.cache.uri属性指定相对路径