【发布时间】:2019-06-11 13:11:38
【问题描述】:
我在非服务器应用程序中使用 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 );
附:正如javadoc 所说:
注意:普通路径将始终被解释为相对于 当前 VM 工作目录,即使它们以斜杠开头。 (这 与 Servlet 容器中的语义一致。)使用 显式的“file:”前缀强制使用绝对文件路径。
“普通路径” - 似乎类似于“dir1/dir2/file.xml”(没有前导斜杠或文件:)。
此外,it seems /home/dir1/file.xml 不能在 Linux 上工作(而 C:\\dir1\\file.xml 在 Windows 上工作)因为 /home - 不是绝对的根!!!
【问题讨论】:
-
如果对您有帮助,请将其标记为“已回答”,以帮助其他人看到您找到了答案并且对您有所帮助。谢谢:)