Подтвердить что ты не робот

Используя 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>

Спасибо...

4b9b3361

Ответ 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: начинается с корня вашего пути к классам.