"file:d:\\dir1\file.xml" 和 "file:/d:\\dir1\file.xml" 作为 FileSystemXmlApplication

Posted

技术标签:

【中文标题】"file:d:\\\\dir1\\file.xml" 和 "file:/d:\\\\dir1\\file.xml" 作为 FileSystemXmlApplicationContext 参数【英文标题】:"file:d:\\dir1\file.xml" and "file:/d:\\dir1\file.xml" as FileSystemXmlApplicationContext arguments"file:d:\\dir1\file.xml" 和 "file:/d:\\dir1\file.xml" 作为 FileSystemXmlApplicationContext 参数 【发布时间】: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.xmlWindows 上工作)因为 /home - 不是绝对的根!!!

【问题讨论】:

如果对您有帮助,请将其标记为“已回答”,以帮助其他人看到您找到了答案并且对您有所帮助。谢谢:) 【参考方案1】:

是的,你是对的。在这种特殊情况下,它接受configLocation

如需更多用例,您可以查看documentation for FileSystemXmlApplicationContext

旁注

考虑到,更好的方法是使用Paths.get,然后从Path 实例中获取位置。

【讨论】:

以上是关于"file:d:\\dir1\file.xml" 和 "file:/d:\\dir1\file.xml" 作为 FileSystemXmlApplication的主要内容,如果未能解决你的问题,请参考以下文章

如何将 ["tag":"google","count":1,"tag":"microsoft",&q

"message":"请求失败,状态码 500","name":"Error","stack":&q

"errors":"errors":["detail":"您无权执行此操作。","code":&qu

"Navicat" , "mysql" , "xxx.war" , "tomcat",“JDK","

"error":"message":"服务需要 JSON-RPC","code":0,"origin"

Artisan 错误 "error":"type":"PDOException","message":"SQL