0%

classpath详解

classpath:和classpath*:的区别

classpath:

在spring配置文件里,可以用 classpath: 来从classpath中加载资源

比如在 src/main/resources 下有一个jdbc.properties的文件,可以用如下方法加载:

1
2
3
4
5
<property name="locations">  
<list>
<value>classpath:jdbc.properties</value>
</list>
</property>

classpath*:

1
2
3
4
5
<property name="mappingLocations">  
<list>
<value>classpath*:/hibernate/*.hbm.xml</value>
</list>
</property>

classpath:classpath*: 的区别在于,前者只会从当前classpath中加载,而后者会从所有的classpath中加载

classpath*:优点

在多个classpath中存在同名资源,都需要加载,那么就不能使用classpath:,而是使用classpath*:

classpath*:缺点

可想而知,用classpath*:需要遍历所有的classpath,所以加载速度是很慢的,因此,在规划的时候,应该尽可能规划好资源文件所在的路径,尽量避免使用classpath*


详细讲解:
Spring中使用classpath加载配置文件浅析