使用classpath:在春天

时间:2012-02-01 08:16:04

标签: spring classpath

我在春天有两个关于classpath:选项的问题: -

1)classpath:是否会搜索相对于指定文档的资源(如果是Web应用程序)?

假设我使用以下内容:

<bean class="mybean">
<property name="myresource" value="classpath:myfile.txt"/>
</bean>
/WEB-INF/classes/config/myconfig.xml 下的 myconfig.xml 中的

。然后从哪里开始搜索?

2)如果我直接定位资源而不是给classpath:,那么搜索是否更快

<bean class="mybean">
<property name="myresource" value="classpath:/WEB-INF/classes/myfolder/myfile.txt"/>
</bean>

而不是

<bean class="mybean">
<property name="myresource" value="classpath:myfile.txt"/>
</bean>

...谢谢

2 个答案:

答案 0 :(得分:17)

  

classpath:是否会搜索相对于指定文档的资源(如果是Web应用程序)?

不,classpath:始终相对于类路径根。如果您在路径的开头放置/,则会以静默方式将其删除。

  

如果直接找到资源位置,搜索速度会更快,例如classpath:/WEB-INF/classes/myfolder/myfile.txt

不,那根本不起作用。类路径根包含/WEB-INF/classes,因此路径应该相对于该路径。

不要将classpath:路径与文件路径混淆,它们彼此没有关系。

答案 1 :(得分:4)

查看http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/resources.html#resources-classpath-wildcards

  

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

所以classpath:从类路径的根开始。