弹簧类路径前缀的区别

2022-08-31 07:33:24

记录在这里,它指出

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

有人能解释一下吗?

使用与不使用星号有什么区别。classpath*:conf/appContext.xmlclasspath:conf/appContext.xml


答案 1

简单定义

简单地说,类路径上所有 jar 中文件夹下的所有 appContext.xml 文件都将被拾取并加入到一个大型应用程序上下文中。classpath*:conf/appContext.xmlconf

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


答案 2

该语法主要用于要使用通配符语法从多个 Bean 定义文件构建应用程序上下文时。classpath*:...

例如,如果使用 构造上下文,则将扫描类路径以查找类路径中调用的每个资源,并且所有这些资源的 Bean 定义将合并到单个上下文中。classpath*:appContext.xmlappContext.xml

相反,将获取一个且仅从类路径调用的文件。如果有多个,则将忽略其他项。classpath:conf/appContext.xmlappContext.xml


推荐