我在春天有两个关于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>
...谢谢
答案 0 :(得分:17)
classpath:
是否会搜索相对于指定文档的资源(如果是Web应用程序)?
不,classpath:
始终相对于类路径根。如果您在路径的开头放置/
,则会以静默方式将其删除。
如果直接找到资源位置,搜索速度会更快,例如
classpath:/WEB-INF/classes/myfolder/myfile.txt
不,那根本不起作用。类路径根包含/WEB-INF/classes
,因此路径应该相对于该路径。
不要将classpath:
路径与文件路径混淆,它们彼此没有关系。
答案 1 :(得分:4)
此特殊前缀指定必须获取与给定名称匹配的所有类路径资源(内部,这通常通过ClassLoader.getResources(...)调用),然后合并以形成最终的应用程序上下文定义。 / p>
所以classpath:
从类路径的根开始。