classpath*:
vs classpath:
?
-
classpath*:
表示整合classpath下所有的与指定文件名相同的文件。 -
classpath:
只加载classpath下第一个与指定文件名相同的文件。
它内部本质上使用了ClassLoader.getResources(...)
方法。
举个例子:
ClassPathXmlApplicationContext classPathXmlApplicationContext = new ClassPathXmlApplicationContext("classpath*:spring-beans.xml");
- 第一种情况:类路径下不存在
spring-beans.xml
,但是依赖包类路径中存在spring-beans.xml
结果:成功加载 - 第二种情况:类路径存在
spring-beans.xml
,但是依赖包类路径中不存在spring-beans.xml
结果:成功加载 - 第三种情况:类路径存在
spring-beans.xml
,但是依赖包类路径中存在spring-beans.xml
结果:成功加载(这时会整合两个spring-beans.xml
)
ClassPathXmlApplicationContext classPathXmlApplicationContext = new ClassPathXmlApplicationContext("classpath:spring-beans.xml");
- 第一种情况:类路径下不存在
spring-beans.xml
,但是依赖包类路径中存在spring-beans.xml
结果:成功加载 - 第二种情况:类路径存在
spring-beans.xml
,但是依赖包类路径中不存在spring-beans.xml
结果:成功加载 - 第三种情况:类路径存在
spring-beans.xml
,但是依赖包类路径中存在spring-beans.xml
结果:成功加载(这时只加载当前类路径中的spring-beans.xml
)