Spring classpath前缀差异

问题

Documentedhereit说明

此特殊前缀指定必须获取与给定名称匹配的所有类路径资源(内部,这通常通过ClassLoader.getResources(...)调用),然后合并以形成最终的应用程序上下文定义。

有人可以解释一下吗?

useclasspath*:conf/appContext.xmlas与classpath:conf/appContext.xml相反,没有星号有什么区别。


#1 热门回答(183 赞)

SIMPLE DEFINITION
classpath*:conf/appContext.xml简单地表示497676145所有appContext.xml文件**underconf文件夹中的所有jar中的文件夹将被拾取并加入到一个大的应用程序上下文中。

相比之下,classpath:conf/appContext.xml将load只有一个这样的文件...第一个在你的类路径上找到。


#2 热门回答(37 赞)

当你想要使用通配符语法从多个bean定义文件构建应用程序上下文时,classpath*:...syntax非常有用。

例如,如果使用classpath*:appContext.xml构造上下文,则将针对类路径中名为appContext.xml的每个资源扫描类路径,并将所有资源中的bean定义合并到单个上下文中。

相比之下,classpath:conf/appContext.xml将从类路径中获取一个且仅有一个名为appContext.xml的文件。如果有多个,其他人将被忽略。


#3 热门回答(18 赞)

classpath *:It是指a资源列表and加载所有这样的文件存在于类路径和列表中可以为空和if没有这样的文件存在在类路径中然后application不会抛出任何异常(只是忽略错误)。

classpath:It是指a某些资源仅加载在类路径上找到的第一个文件和如果类路径中没有这样的文件则会引发异常

java.io.FileNotFoundException: class path resource [conf/appContext.xml] cannot be opened because it does not exist