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