Інтерфейс ResourcePatternResolver
є розширенням інтерфейсу ResourceLoader
, який визначає
стратегію дозволу шаблону розташування (наприклад, шаблону шляху в стилі Ant) до об'єктів Resource
.
public interface ResourcePatternResolver extends ResourceLoader {
String CLASSPATH_ALL_URL_PREFIX = "classpath*:";
Resource[] getResources(String locationPattern) throws IOException;
}
Як бачиш вище, цей інтерфейс також визначає спеціальний префікс ресурсу classpath*:
для всіх ресурсів,
що збігаються, зі шляху класів. Зверни увагу: в цьому випадку розташування ресурсу має бути шляхом без плейсхолдерів
— наприклад, classpath*:/config/beans.xml
. JAR-файли або різні каталоги в classpath можуть містити
кілька файлів з однаковим шляхом та однаковим ім'ям.
ResourceLoader
, що передається (наприклад, наданий через семантику ResourceLoaderAware
)
може бути перевірений на предмет того, чи він реалізує цей розширений інтерфейс.
PathMatchingResourcePatternResolver
— це самостійна реалізація, яка може використовуватися поза ApplicationContext
і також використовується ResourceArrayPropertyEditor
для заповнення властивостей бінів
Resource[].
PathMatchingResourcePatternResolver
може дозволити зазначений шлях розташування
ресурсу до одного або кількох відповідних об'єктів Resource.
Вихідний шлях може бути простим шляхом,
який має відображення "один до одного" з цільовим Resource
, або може містити спеціальний префікс classpath*
:,
та/або внутрішні стандартні вирази в стилі Ant (які порівнюються за допомогою службової програми org.springframework.util.AntPathMatcher
у Spring). Обидва останні варіанти є фактично підстановочними знаками (wildcards).
ResourceLoader
за замовчуванням у будь-якому стандартному ApplicationContext
фактично є
екземпляром PathMatchingResourcePatternResolver
, який реалізує інтерфейс ResourcePatternResolver
.
Те саме справедливе й для самого екземпляра ApplicationContext
, який також реалізує інтерфейс
ResourcePatternResolver
і делегує його стандартному
PathMatchingResourcePatternResolver
.
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ