Spring类path前缀差异

在这里logging它说

这个特殊的前缀指定必须获得与给定名称相匹配的所有类path资源(在内部,这本质上是通过ClassLoader.getResources(…)调用),然后合并以形成最终的应用程序上下文定义。

有人可以解释这个吗?

使用classpath*:conf/appContext.xml与不使用星号的classpath:conf/appContext.xml什么不同。

简单的定义

classpath*:conf/appContext.xml仅仅意味着classpath*:conf/appContext.xml所有jar文件夹下的conf文件夹中的所有appContext.xml文件都将被拾取并join到一个大的应用程序上下文中。

相反, classpath:conf/appContext.xml只会加载一个这样的文件 …第一个在你的类path中find的文件

classpath*:...语法主要用于当您想使用通配符语法从多个bean定义文件构build应用程序上下文时。

例如,如果使用classpath*:appContext.xml构造上下文,则将在类path中扫描classpath,以查找每个名为appContext.xml资源,并将来自所有资源的bean定义合并到一个上下文中。

相比之下, classpath:conf/appContext.xml将从classpath:conf/appContext.xml获取一个且唯一一个名为appContext.xml文件。 如果有不止一个,其他人将被忽略。

classpath *:它引用一个资源列表加载所有类path中存在的文件, 列表可以是空的 ,如果类path中没有这样的文件 ,那么应用程序不会抛出任何exception (只是忽略错误)。

classpath:它引用一个特定的资源只加载在classpath中find的第一个文件, 如果类path中没有这样的文件,它会抛出一个exception

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