La interfaz ResourcePatternResolver es una extensión de la interfaz ResourceLoader que define una estrategia para resolver un patrón de ubicación (como un patrón de ruta estilo Ant) en objetos de Resource.

interfaz pública ResourcePatternResolver extiende ResourceLoader {
    Cadena CLASSPATH_ALL_URL_PREFIX = "classpath*:";
    Resource[] getResources(String locationPattern) lanza IOException;
}

Como puede ver arriba, esta interfaz también define un prefijo de recurso especial classpath*: para todos los recursos coincidentes en el classpath. Tenga en cuenta que en este caso la ubicación del recurso debe ser una ruta sin marcadores de posición, por ejemplo, classpath*:/config/beans.xml. Los archivos JAR o diferentes directorios en la ruta de clase pueden contener varios archivos con la misma ruta y el mismo nombre.

El ResourceLoader pasado (por ejemplo, proporcionado a través de la semántica ResourceLoaderAware) se puede verificar para ver si implementa esta interfaz extendida.

PathMatchingResourcePatternResolver es una implementación independiente que se puede usar fuera de ApplicationContext y también la usa ResourceArrayPropertyEditor para completar las propiedades del Resource[] beans. PathMatchingResourcePatternResolver puede resolver una ruta de ubicación de recurso especificada en uno o más objetos de correspondientes Resource La ruta de origen puede ser una ruta simple que tenga un Mapeo -a-uno al Recurso de destino, o puede contener un prefijo especial classpath*:, y/o expresiones estándar internas de estilo Ant (asignadas usando el org.springframework.util.AntPathMatcher en Spring). Ambas últimas opciones son en realidad comodines.

El

ResourceLoader por defecto en cualquier ApplicationContext estándar es en realidad una instancia de un PathMatchingResourcePatternResolver que implementa el ResourcePatternResolver interfaz. Lo mismo ocurre con la instancia ApplicationContext, que también implementa la interfaz ResourcePatternResolver y la delega al PathMatchingResourcePatternResolver estándar.