相对于Jar部署位置的引用文件

时间:2013-05-22 17:40:21

标签: java spring spring-mvc resources

如何根据外部beans.xml文件相对于我的jar文件部署位置的位置来引用它?这就是我现在所拥有的,但不起作用:

ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext("../beans.xml");

我希望它不在类路径中,因此我可以在不重新部署的情况下更改内容,但相对于jar的已部署位置,无论我将jar和beans.xml放在文件系统中的哪个位置,它都可以正常工作,如只要它们相对于彼此正确定位。

这是Spring btw,如果有帮助的话。

谢谢!

2 个答案:

答案 0 :(得分:0)

应用程序上下文文件必须位于类路径上才能使ClassPathXmlApplicationContext起作用。要使用相对路径,您必须使用FileSystemXmlApplicationContext

ApplicationContext context = new FileSystemXmlApplicationContext("../beans.xml");

答案 1 :(得分:0)

您可以在spring-config.xml中导入外部bean配置文件,您可以导入extends

<beans ...>
   <import resource="file:/path/to/external/config.xml"/>
</beans>

上面的Spring配置将导入/path/to/external/config.xml。拥有外部文件将允许您配置bean而无需重建主war / jar。

在Java代码中,您可以按如下方式加载它:

ApplicationContext context = new ClassPathXmlApplicationContext("config.xml");

并且config.xml文件应位于:

project-classpath/config.xml

有关加载外部配置文件的更多信息,您可以找到 here