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