" classpath:" 和 "classpath:/" 在 Spring XML 中有什么区别?

19

我正在处理一些Spring XML配置文件,有时它们使用 "classpath:/datasource.xml" ,而有时则使用 "classpath:datasource.xml"。这两者之间有区别吗?是否前面的/是可选的/隐含的/冗余的?


我没有看到这两者之间有任何区别。你会看到的最大区别是相对路径和类路径位置上的星号。 - muruga
@muruga 实际上,我也看到了,这是什么意思? - Sled
1个回答

21
我看不出这两者之间有什么区别。你会发现最大的区别在于相对路径和类路径位置上的星号。
以下是摘自Spring资源的一段内容,查找第4.7.2.2节。
Classpath*: "classpath*:"前缀还可以与其余位置路径中的PathMatcher模式组合使用,例如"classpath*:META-INF/*-beans.xml"。在这种情况下,解决策略非常简单:在最后一个non-wildcard路径段上使用ClassLoader.getResources()调用,以获取类加载器层次结构中所有匹配的资源,然后对于通配符子路径,使用与上面描述的相同的PathMatcher解决策略。
这意味着像“classpath*:*.xml”这样的模式将不会从jar文件的根目录检索文件,而只会从扩展目录的根目录检索文件。这源自JDK的ClassLoader.getResources()方法中的限制,该方法仅为传入的空字符串(表示要搜索的潜在根目录)返回文件系统位置。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接