Используя classpath: в spring
У меня есть два вопроса относительно опции classpath:
в spring: -
1) Идет ли classpath:
поиск ресурса относительно документа, в котором он указан (в случае веб-приложений)?
Предположим, что я использую следующее:
<bean class="mybean">
<property name="myresource" value="classpath:myfile.txt"/>
</bean>
в myconfig.xml в /WEB -INF/classes/config/myconfig.xml. Затем, откуда он начнет поиск?
2) Быстрее ли поиск, если я даю прямое расположение ресурса вместо предоставления classpath:
i.e
<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>
Спасибо...
Ответы
Ответ 1
Идет ли classpath:
поиск ресурса относительно документа, в котором он указан (в случае веб-приложений)?
Нет, classpath:
всегда относится к корню classpath. Если вы положите /
в начале пути, он будет удален.
Быстрее ли поиск, если я даю прямое расположение ресурса, а не, например. classpath:/WEB-INF/classes/myfolder/myfile.txt
Нет, это не сработает. Корень classpath содержит /WEB-INF/classes
, поэтому путь должен быть относительно этого.
Не путайте пути classpath:
с путями файлов, они не имеют никакого отношения друг к другу.
Ответ 2
Взгляните на http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/resources.html#resources-classpath-wildcards
Этот специальный префикс указывает, что должны быть получены все ресурсы pathpath, соответствующие указанному имени (внутренне это происходит, по сути, с помощью вызова ClassLoader.getResources(...)), а затем объединяется для формирования окончательного определения контекста приложения.
Итак classpath:
начинается с корня вашего пути к классам.