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