Інтерфейс 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.