“类路径:”和“类路径:/”有什么区别在春季XML中?

2022-09-02 21:40:39

我正在研究一些Spring XML配置文件,有时它们使用,有时使用。两者之间是否有区别,或者前导是可选的/隐含的/多余的?"classpath:/datasource.xml""classpath:datasource.xml"/


答案 1

我看不出这两者之间有任何区别。您将看到的最大区别是相对路径和类路径位置上的*

以下是Spring Resources的摘录,请查找第4.7.2.2节

Classpath*:
“classpath*:”前缀也可以与位置路径其余部分的PathMatcher模式结合使用,例如“classpath*:META-INF/*-beans.xml”。在这种情况下,解析策略相当简单:在最后一个非通配符路径段上使用 ClassLoader.getResources() 调用来获取类装入器层次结构中的所有匹配资源,然后对每个资源使用上述相同的 PathMatcher 解析策略作为通配符子路径。

这意味着像“classpath*:*.xml”这样的模式不会从jar文件的根目录中检索文件,而只会从扩展目录的根目录中检索文件。这源于 JDK 的 ClassLoader.getResources() 方法中的一个限制,该方法仅返回传入空字符串的文件系统位置(指示要搜索的潜在根)。


答案 2

推荐