В чем разница между "classpath:" и "classpath:/" в Spring XML? - программирование
Подтвердить что ты не робот

В чем разница между "classpath:" и "classpath:/" в Spring XML?

Я работаю над некоторыми файлами конфигурации Spring XML, а иногда они используют "classpath:/datasource.xml", а иногда и "classpath:datasource.xml". Есть ли разница между двумя или является ведущим / опциональным/подразумеваемым/избыточным?

4b9b3361

Ответ 1

Я не вижу разницы между этими двумя. Самое большое различие, которое вы увидите, заключается в том, что относительный путь и * в местоположении пути к классам

Вот выдержка из Spring Ресурсы, посмотрите раздел 4.7.2.2

Classpath *:
Префикс "classpath *:" также можно комбинировать с шаблоном PathMatcher в остальной части пути местоположения, например "classpath *: META-INF/* - beans.xml". В этом случае стратегия разрешения довольно проста: вызов класса ClassLoader.getResources() используется в последнем сегменте пути без подстановочных знаков, чтобы получить все соответствующие ресурсы в иерархии загрузчика классов, а затем от каждого ресурса использовать одну и ту же стратегию решения PathMatcher описанный выше, используется для подкаталога подстановочных знаков.

Это означает, что такой шаблон, как "classpath *: *. xml" , не будет извлекать файлы из корня файлов jar, а скорее из корня расширенных каталогов. Это происходит из ограничения в методе JDK ClassLoader.getResources(), который возвращает только местоположения файловой системы для пустой пустой строки (указывающей на возможные корни для поиска).