“ file:d:\\ dir1 \ file.xml”和“ file:/ d:\\ dir1 \ file.xml”作为FileSystemXmlApplicationContext参数

时间:2019-06-11 13:11:38

标签: java spring

我从非服务器应用程序中使用Spring(只需从Eclipse中某个类的main()编译并运行它即可)。

我的问题是,作为新FileSystemXmlApplicationContext的参数可以接受什么?

此参数是一个字符串。我没有看到任何URI / URL构造函数。

但是不仅接受“ d:\ dir1 \ file.xml”,而且接受“ file:d:\ dir1 \ file.xml”和“ file:/ d:\ dir1 \ file.xml”-为什么?我可以在任何地方都依赖它吗(比如说在Linux上,我只是在Windows上测试过)。可以在此String参数中使用“ file:sth”吗?

String metadata = "D:\\mybean.xml";  // fine!
String metadata = "file:D:\\mybean.xml";  // fine!
String metadata = "file:/D:\\mybean.xml"; // fine
String metadata1 = "file://D:\\mybean.xml"; // resource not found
ApplicationContext context = new FileSystemXmlApplicationContext( metadata );

P.S。正如javadoc所述:

  

注意:纯路径将始终被解释为相对于   当前VM工作目录 ,即使它们以斜杠开头。 (这个   与Servlet容器中的语义一致。)使用   明确的“文件:”前缀以强制执行绝对文件路径。

“纯路径”-类似于“ dir1 / dir2 / file.xml”(不带斜杠或文件:)。

此外,it seems /home/dir1/file.xml不能在 Linux 上运行(而C:\\dir1\\file.xml不能在 Windows 上运行)是因为{{ 1}}-从根本上来说不是绝对的!!

1 个答案:

答案 0 :(得分:1)

是的,您是对的。在这种情况下,它接受configLocation

要了解更多用例,可以看看FileSystemXmlApplicationContext的{​​{3}}。

侧注

请注意,更好的方法是使用documentation,然后从该Path实例中获取位置。